画柱图就是多画几个矩形之后放在一起,这个实现了基本功能还不够完善如果要用到项目中需要自己修改。

原文地址:http://blog.csdn.net/qqmcy/article/details/25984717

效果图:

使用类:

HelloWorldScene.cpp

#include "HelloWorldScene.h"
#include "DJColumn.h"#include "DJColumnChart.h"USING_NS_CC;Scene* HelloWorld::createScene()
{// 'scene' is an autorelease objectauto scene = Scene::create();// 'layer' is an autorelease objectauto layer = HelloWorld::create();// add layer as a child to scenescene->addChild(layer);// return the scenereturn scene;
}// on "init" you need to initialize your instance
bool HelloWorld::init()
{//// 1. super init firstif ( !Layer::init() ){return false;}Size visibleSize = Director::getInstance()->getVisibleSize();Point origin = Director::getInstance()->getVisibleOrigin();//    auto top = Label::createWithSystemFont("hi放大师傅看到是非得失", "huawenxinsong", 20);
//    top->setPosition(Point(visibleSize.width / 2, visibleSize.height / 2));
//    addChild(top);std::vector<float> temp;temp.push_back(106);temp.push_back(206);temp.push_back(305);temp.push_back(152);std::vector<float> temp1;temp1.push_back(73);temp1.push_back(126);temp1.push_back(55);temp1.push_back(203);std::vector<std::vector<float>> vec;vec.push_back(temp);vec.push_back(temp1);std::vector<Color4B> colorVec;colorVec.push_back(Color4B::RED);colorVec.push_back(Color4B::ORANGE);DJColumnChart* djColumnChart = DJColumnChart::create();djColumnChart->setColumnValueVec(vec);djColumnChart->setColumnColorVec(colorVec);djColumnChart->setSize(Size(700, 700));djColumnChart->setPosition(Point(200, 10));djColumnChart->addDJColumnChart();addChild(djColumnChart);return true;
}void HelloWorld::menuCloseCallback(Ref* pSender)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT)MessageBox("You pressed the close button. Windows Store Apps do not implement a close button.","Alert");return;
#endifDirector::getInstance()->end();#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)exit(0);
#endif
}

DJColumn.h柱图节点类

//
//  DJColumn.h
//  ColumnChart
//
//  Created by 杜甲 on 14-5-15.
//
//#ifndef __ColumnChart__DJColumn__
#define __ColumnChart__DJColumn__#include "cocos2d.h"
#include "ui/CocosGUI.h"
USING_NS_CC;class DJColumn :public ui::Layout{public:CREATE_FUNC(DJColumn);CC_SYNTHESIZE(Color4B, _djColumnColor, DJColumnColor);CC_SYNTHESIZE(float, _djColumnValue, DJColumnValue);CC_SYNTHESIZE(Size, _djColumnSize, DJColumnSize);virtual bool init();void draw(cocos2d::Renderer *renderer, const kmMat4 &transform, bool transformUpdated);void onDraw(const kmMat4 &transform, bool transformUpdated);CustomCommand _customCommand;};#endif /* defined(__ColumnChart__DJColumn__) */

DJColumn.cpp

//
//  DJColumn.cpp
//  ColumnChart
//
//  Created by 杜甲 on 14-5-15.
//
//#include "DJColumn.h"
bool DJColumn::init()
{bool bRet = false;do {CC_BREAK_IF(!ui::Layout::init());bRet = true;} while (0);return bRet;
}void DJColumn::draw(cocos2d::Renderer *renderer, const kmMat4 &transform, bool transformUpdated)
{_customCommand.init(_globalZOrder);_customCommand.func = CC_CALLBACK_0(DJColumn::onDraw, this,transform,transformUpdated);renderer->addCommand(&_customCommand);}void DJColumn::onDraw(const kmMat4 &transform, bool transformUpdated)
{kmGLPushMatrix();kmGLLoadMatrix(&transform);CHECK_GL_ERROR_DEBUG();DrawPrimitives::drawSolidRect(Point(0, 0), Point(getSize().width, getSize().height),Color4F(_djColumnColor.r, _djColumnColor.g, _djColumnColor.b, _djColumnColor.a));kmGLPopMatrix();
}

DJColumnChart.h柱图类

//
//  DJColumnChart.h
//  ColumnChart
//
//  Created by 杜甲 on 14-5-15.
//
//#ifndef __ColumnChart__DJColumnChart__
#define __ColumnChart__DJColumnChart__#include "cocos2d.h"
#include "ui/CocosGUI.h"
USING_NS_CC;class DJColumnChart:public ui::Layout{public:CREATE_FUNC(DJColumnChart);virtual bool init();CC_SYNTHESIZE(std::vector<std::vector<float>>, _columnValueVec, ColumnValueVec);CC_SYNTHESIZE(std::vector<Color4B>, _columnColorVec, ColumnColorVec);void addDJColumnChart();std:: string fontName;double getMaxValue(std::vector<float> vec);void draw(cocos2d::Renderer *renderer, const kmMat4 &transform, bool transformUpdated);void onDraw(const kmMat4 &transform, bool transformUpdated);CustomCommand _customCommand;private:float spaceRatio ;  //y轴间距系数float leftRatioX;   //x轴左侧间距系数int maxValue1;    //数据中的最大值float  layerHeight1 ;  //图离底部的距离};#endif /* defined(__ColumnChart__DJColumnChart__) */

DJColumnChart.cpp

//
//  DJColumnChart.cpp
//  ColumnChart
//
//  Created by 杜甲 on 14-5-15.
//
//#include "DJColumnChart.h"
#include "DJColumn.h"bool DJColumnChart::init()
{bool bRet = false;do {CC_BREAK_IF(!ui::Layout::init());fontName = "huawenxinsong";bRet = true;} while (0);return bRet;
}void DJColumnChart::draw(cocos2d::Renderer *renderer, const kmMat4 &transform, bool transformUpdated)
{_customCommand.init(_globalZOrder);_customCommand.func = CC_CALLBACK_0(DJColumnChart::onDraw, this,transform,transformUpdated);renderer->addCommand(&_customCommand);}
void DJColumnChart::onDraw(const kmMat4 &transform, bool transformUpdated)
{kmGLPushMatrix();kmGLLoadMatrix(&transform);spaceRatio = 0.06f;leftRatioX = 0.1f;std::vector<float> v0 = _columnValueVec.at(0);std::vector<float> v1 = _columnValueVec.at(1);double max1 = getMaxValue(v0);double max2 = getMaxValue(v1);double max  = max2;if (max1 > max2) {max = max1;}int maxValue2 = roundf(max / 100)* 100 ;int  maxNum = maxValue2 / 10;DrawPrimitives::setDrawColor4B(0, 255, 255, 255);float layoutHeight = getSize().height;float layoutWidth = getSize().width;float betweenDistance = layoutHeight / 13;log("AAAAA%f",betweenDistance);float tempbetweenDistance = betweenDistance;for (int i = 0; i < 11; i ++) {Point bPoint = Point(44, tempbetweenDistance);Point ePoint = Point(layoutWidth - 30, tempbetweenDistance);DrawPrimitives::drawLine(bPoint, ePoint);ui::Text* text = ui::Text::create(StringUtils::format("%d",maxNum* i), fontName, 20);text->setPosition(Point(18, tempbetweenDistance));text->setTextHorizontalAlignment(TextHAlignment::CENTER);text->setSize(Size(layoutWidth * 0.08, 20));addChild(text);
//        Label* labelY = Label::createWithSystemFont(StringUtils::format("%d",i), "huawenxinsong", 20);
//        labelY->setAlignment(TextHAlignment::RIGHT);
//        labelY->setPosition(Point(2, tempbetweenDistance));
//        addChild(labelY);tempbetweenDistance += betweenDistance;}kmGLPopMatrix();
}void DJColumnChart::addDJColumnChart()
{float betweenDistance = getSize().height / 12;log("betweenDistance = %f",betweenDistance);std::vector<float> temp = _columnValueVec.at(0);std::vector<float> temp1 = _columnValueVec.at(1);Color4B c1 = _columnColorVec.at(0);Color4B c2 = _columnColorVec.at(1);for (int i = 0; i <temp1.size(); i++) {DJColumn* djColumn = DJColumn::create();djColumn->setSize(Size(20, temp1.at(i) * 53.846153/30));djColumn->setDJColumnColor(c1);//djColumn->setAnchorPoint(Point::ANCHOR_MIDDLE_BOTTOM);djColumn->setPosition(Point(60 * i + getSize().width * 0.1 + 20, betweenDistance ));addChild(djColumn);}for (int i = 0; i <temp.size(); i++) {DJColumn* djColumn = DJColumn::create();djColumn->setSize(Size(20, temp.at(i)  * 53.846153/30));djColumn->setDJColumnColor(c2);//djColumn->setAnchorPoint(Point::ANCHOR_MIDDLE_BOTTOM);djColumn->setPosition(Point(60 * i + getSize().width * 0.1 , betweenDistance ));addChild(djColumn);ui::Text* nameText = ui::Text::create("名字", fontName, 20);nameText->setPosition(Point(60 * i + getSize().width * 0.1 + 25 , 40));addChild(nameText);}}double DJColumnChart::getMaxValue(std::vector<float> vec)
{double maxY = 8;for (int i = 0; i < vec.size(); i++) {float num = vec.at(i);if (maxY < abs(num)) {maxY = abs(num);}}return maxY;
}

cocos2d-x3.0 柱图相关推荐

  1. Echarts饼图实现圆形柱图

    一.代码简介 本次主要是在Vue web项目中,利用Echarts中的饼图组件实现圆形柱状图 二.功能预览 三.示例代码 <template><div id="echart ...

  2. cocos2d中CCAnimation的使用(cocos2d 1.0以上版本)

    原文地址:cocos2d中CCAnimation的使用(cocos2d 1.0以上版本)作者:七贤林子 在cocos2d  0.9及以下版本中,CCAnimation中可以使用animationWit ...

  3. echarts柱图根据值显示不同颜色_视频 | Origin画3D柱图,这篇讲透了!

    视频教程 东华大学的汪博士提出一个问题:怎样画三维柱状图.汪博士提供了一篇王中林院士的文献图,画一个只有四根柱子的三维柱图. 画了一个草图,A0.A1安排在第二行,A3.A2安排在第一行.相信很多同学 ...

  4. 利用Office Chart 制作柱图(一个柱子)

    环境:VS.NET 2003 .Office 2003 语言:VBScript .C# 步骤:         1.单击"工具箱-添加/移除项",弹出"自定义工具箱&qu ...

  5. Echarts最简单的折线图、柱图、饼图、仪表盘+sql语句

    注:以后所有升级版的图形化显示都在此基础上延伸,打好基础才是硬道理本人小白一枚〜欢迎来讨论 一,柱图显示: HTM页面: <html style="height: 100%" ...

  6. echart柱状图、电池图、3D柱图、3D圆柱图

    电池图 let backgroundColor = 'rgba(0,0,0,1)'; let chartdata = [[111, 222, 333, 444],['石油', '煤矿', '汽油', ...

  7. echarts实现横向柱图文字在柱图上面

    前言: echarts实现横向柱图文字在柱图上面 效果图: 实现源代码: <div id="lip" style="width:100%;height:800px; ...

  8. echarts分段式的象形柱图

    最近做项目UI那边那边提了个比较少见的需求,如图: 我一开始想到的自然是用element ui的进度条来做,但找了许久都没找到这种的样式效果. 于是考虑用柱状图,如果这三个数据只用一个柱状图自然很难实 ...

  9. Echarts 柱图中的柱条(bar)的最小高度设置方法,数字显示不全的解决方法

    问题:在使用 echarts 柱图时,如果某个柱条(bar)的数据特别小.那么该柱条会显示的特别小,在柱条中的数字也无法完整的显示. 解决办法:设置 series 的 barMinHeight 配置项 ...

最新文章

  1. gorm的零值问题:默认仅更新非零值
  2. Android AIDL使用介绍(2)自定义数据类型的传递
  3. 折半查找的思想及源码_结构与算法(04):排序规则与查找算法
  4. struts-config.xml 简述
  5. @angular/platform-browser-dynamic
  6. eclipse集成maven插件
  7. fedora 33 topbar_最新!新增确诊病例33例,其中本土病例1例
  8. 【转】Power Platform(简介)
  9. Python--递归
  10. Android异常总结---1.Android java.net.SocketException: Address family not supported by protocol
  11. 视频教程-VBA从入门到精通(控件+类模块+ADO+SQL数据库)-Office/WPS
  12. 服装进销存软件排名前十名,最新门店进销存测评现已出排行榜
  13. wifi 流量劫持_无线网被流量劫持了怎么弄,WiFi流量被劫持如何处理
  14. 网课答案免费搜题入口
  15. 解析微信小程序码的地址scene
  16. 服务器可以装win7或win10系统吗,win10改win7用legacy还是uefi?_网站服务器运行维护,window...
  17. 电子商务新发展 海峡两岸智富惠论坛今日在厦召开
  18. ios视频直播没有音频问题
  19. 毕业设计-基于大数据的电影推荐系统-python
  20. 不使用架构工具在vscode中操作vue,扩展添加vue.js.devtools(Hollo案例)

热门文章

  1. 送书|逆向系列-你一定要懂的MD5加密
  2. ai怎么取消颗粒效果_怎么用AI制作粒子消散效果字体?
  3. c语言课程设计学生信息管理系统
  4. 和风天气 (简易版)
  5. ETest_CPS——工业信息物理系统测试验证平台
  6. python数据分析案例-利用生存分析Kaplan-Meier法与COX比例风险回归模型进行客户流失分析与剩余价值预测
  7. 相机响应曲线、ISO详解
  8. php让手机全屏,手机网站按比例显示铺满手机全屏/网站两边不留白
  9. 1008: 美元和人民币 C语言
  10. SQL Server 为视图或函数 指定的列名比其定义中的列多