cocos2d-x3.0 柱图
画柱图就是多画几个矩形之后放在一起,这个实现了基本功能还不够完善如果要用到项目中需要自己修改。
原文地址: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 柱图相关推荐
- Echarts饼图实现圆形柱图
一.代码简介 本次主要是在Vue web项目中,利用Echarts中的饼图组件实现圆形柱状图 二.功能预览 三.示例代码 <template><div id="echart ...
- cocos2d中CCAnimation的使用(cocos2d 1.0以上版本)
原文地址:cocos2d中CCAnimation的使用(cocos2d 1.0以上版本)作者:七贤林子 在cocos2d 0.9及以下版本中,CCAnimation中可以使用animationWit ...
- echarts柱图根据值显示不同颜色_视频 | Origin画3D柱图,这篇讲透了!
视频教程 东华大学的汪博士提出一个问题:怎样画三维柱状图.汪博士提供了一篇王中林院士的文献图,画一个只有四根柱子的三维柱图. 画了一个草图,A0.A1安排在第二行,A3.A2安排在第一行.相信很多同学 ...
- 利用Office Chart 制作柱图(一个柱子)
环境:VS.NET 2003 .Office 2003 语言:VBScript .C# 步骤: 1.单击"工具箱-添加/移除项",弹出"自定义工具箱&qu ...
- Echarts最简单的折线图、柱图、饼图、仪表盘+sql语句
注:以后所有升级版的图形化显示都在此基础上延伸,打好基础才是硬道理本人小白一枚〜欢迎来讨论 一,柱图显示: HTM页面: <html style="height: 100%" ...
- echart柱状图、电池图、3D柱图、3D圆柱图
电池图 let backgroundColor = 'rgba(0,0,0,1)'; let chartdata = [[111, 222, 333, 444],['石油', '煤矿', '汽油', ...
- echarts实现横向柱图文字在柱图上面
前言: echarts实现横向柱图文字在柱图上面 效果图: 实现源代码: <div id="lip" style="width:100%;height:800px; ...
- echarts分段式的象形柱图
最近做项目UI那边那边提了个比较少见的需求,如图: 我一开始想到的自然是用element ui的进度条来做,但找了许久都没找到这种的样式效果. 于是考虑用柱状图,如果这三个数据只用一个柱状图自然很难实 ...
- Echarts 柱图中的柱条(bar)的最小高度设置方法,数字显示不全的解决方法
问题:在使用 echarts 柱图时,如果某个柱条(bar)的数据特别小.那么该柱条会显示的特别小,在柱条中的数字也无法完整的显示. 解决办法:设置 series 的 barMinHeight 配置项 ...
最新文章
- gorm的零值问题:默认仅更新非零值
- Android AIDL使用介绍(2)自定义数据类型的传递
- 折半查找的思想及源码_结构与算法(04):排序规则与查找算法
- struts-config.xml 简述
- @angular/platform-browser-dynamic
- eclipse集成maven插件
- fedora 33 topbar_最新!新增确诊病例33例,其中本土病例1例
- 【转】Power Platform(简介)
- Python--递归
- Android异常总结---1.Android java.net.SocketException: Address family not supported by protocol
- 视频教程-VBA从入门到精通(控件+类模块+ADO+SQL数据库)-Office/WPS
- 服装进销存软件排名前十名,最新门店进销存测评现已出排行榜
- wifi 流量劫持_无线网被流量劫持了怎么弄,WiFi流量被劫持如何处理
- 网课答案免费搜题入口
- 解析微信小程序码的地址scene
- 服务器可以装win7或win10系统吗,win10改win7用legacy还是uefi?_网站服务器运行维护,window...
- 电子商务新发展 海峡两岸智富惠论坛今日在厦召开
- ios视频直播没有音频问题
- 毕业设计-基于大数据的电影推荐系统-python
- 不使用架构工具在vscode中操作vue,扩展添加vue.js.devtools(Hollo案例)