cocos2d-x3.0 柱图
来源:互联网 发布:单片机原理及应用题库 编辑:程序博客网 时间:2024/04/29 22:08
画柱图就是多画几个矩形之后放在一起,这个实现了基本功能还不够完善如果要用到项目中需要自己修改。
原文地址: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 object auto scene = Scene::create(); // 'layer' is an autorelease object auto layer = HelloWorld::create(); // add layer as a child to scene scene->addChild(layer); // return the scene return scene;}// on "init" you need to initialize your instancebool HelloWorld::init(){ ////////////////////////////// // 1. super init first if ( !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;#endif Director::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;}
0 0
- cocos2d-x3.0 柱图
- Cocos2d-x3.0 EventListener
- cocos2d-x3.0 SpriteFrameCache
- Cocos2d-x3.0触摸
- Cocos2d-x3.0 Button
- Cocos2d-x3.0 LoadingBar
- cocos2d-x3.0 PageView
- cocos2d-x3.0 RichText
- cocos2d-x3.0 ScrollView
- cocos2d-x3.0 Slider
- cocos2d-x3.0 ListView
- cocos2d-x3.0
- cocos2d-x3.0学习1
- cocos2d-x3.0输入框
- cocos2d-x3.0 touch研究
- xcode安装cocos2d-x3.0
- cocos2d-x3.0的HelloWorld
- cocos2d-x3.0RC2 TableViewDemo
- phonegap经典文
- 视频及其他类型云存储平台 备忘
- c语言(a < b < c )的陷阱
- python 安装PIL
- 数据库索引,视图,触发器,储存过程的作用
- cocos2d-x3.0 柱图
- struts2的请求处理过程源码分析
- android 之旋转罗盘 风车 开发 Android 随手指旋转图片
- 设计模式【2】:工厂方法【创建对象】
- 为什么静态成员、静态方法中不能用this和super关键字
- 【收藏】安卓手机APP 入门 源码 BMI 健康检测 JAVA源码
- 使用IAR编译STM8S 如何生产烧录文件
- 工作记录 - 登录安全认证中数据转化和大小模式提取
- 软件是否支持win7、win8、SQL2005、SQL2008?