Cocos2d-x 图形绘制
来源:互联网 发布:淘宝双十一英文介绍 编辑:程序博客网 时间:2024/05/04 13:46
转自:http://blog.csdn.net/zhy_cheng/article/details/8480048
图形绘制的话,在cocos2d-x自带的TestCpp里有,包括绘制点,直线,多边形(填充的和没有填充的),圆,贝赛尔曲线。
首先在HelloWorld类中重写父类的draw方法
- virtual void draw();
virtual void draw();
在源文件中将init中的类容删去,应为init方法比draw先执行,会覆盖我们画出的效果。删除之后,init方法如下
- bool HelloWorld::init()
- {
- bool bRet = false;
- do
- {
- CC_BREAK_IF(! CCLayer::init());
- bRet = true;
- } while (0);
- return bRet;
- }
bool HelloWorld::init(){ bool bRet = false; do { CC_BREAK_IF(! CCLayer::init()); bRet = true; } while (0); return bRet;}
然后在draw方法中写如下代码:
- void HelloWorld::draw()
- {
- CHECK_GL_ERROR_DEBUG();
- /*
- 画一条直线,默认的宽度是1,颜色是白色,不透明,glEnable(GL_LINE_SMOOTH);
- 默认的情况下是后面不再设置颜色后线宽
- */
- glLineWidth( 1.0f );
- ccDrawColor4B(255,255,255,255);
- ccDrawLine(ccp(0,0),ccp(480,320));
- CHECK_GL_ERROR_DEBUG();
- glLineWidth( 5.0f );
- ccDrawColor4B(255,0,0,255);
- ccDrawLine(ccp(0,320), ccp(480,0));
- CHECK_GL_ERROR_DEBUG();
- //ccPointSize(128);这个没用啊
- ccDrawColor4B(0,255,255,128);
- ccDrawPoint( ccp(240,200) );
- CHECK_GL_ERROR_DEBUG();
- // 4个点一起画
- CCPoint points[] = { ccp(60,60), ccp(70,70), ccp(60,70), ccp(70,60) };
- ccPointSize(4);
- ccDrawColor4B(0,255,255,255);
- ccDrawPoints( points, 4);
- // draw a green circle with 10 segments
- glLineWidth(1);
- ccDrawColor4B(0, 255, 0, 255);
- ccDrawCircle( ccp(240,160),//圆心
- 100,//半径
- 1, //如果后面设置了从圆心到圆的连线为true的话,
- //这个值是连线的角度,0为水平向左,逆时针
- 360,//将这个圆分为多少块
- true//是否有从圆心到圆的连线
- );
- //画一个多边形
- ccDrawColor4B(255, 255, 0, 255);
- glLineWidth(1);
- CCPoint vertices[] = { ccp(0,0), ccp(50,50), ccp(100,50), ccp(100,100), ccp(50,100) };
- ccDrawPoly( vertices, 5, true//是否封闭
- );
- // 填充的多边形
- glLineWidth(1);
- CCPoint filledVertices[] = { ccp(0,120), ccp(50,120), ccp(50,170), ccp(25,200), ccp(0,170) };
- ccDrawSolidPoly(filledVertices, 5, ccc4f(0.5f, 0.5f, 1, 1 )//填充颜色
- );
- //贝塞尔曲线
- ccDrawColor4B(255, 255, 0, 255);
- ccDrawCubicBezier(ccp(0,0),//开始点
- ccp(50,50),//控制点
- ccp(250,100),//控制点
- ccp(300,300),//目标点
- 100//分成多少段得到的曲线
- );
- // 还原默认值
- glLineWidth(1);
- ccDrawColor4B(255,255,255,255);
- ccPointSize(1);
- }
void HelloWorld::draw(){CHECK_GL_ERROR_DEBUG();/*画一条直线,默认的宽度是1,颜色是白色,不透明,glEnable(GL_LINE_SMOOTH);默认的情况下是后面不再设置颜色后线宽*/glLineWidth( 1.0f );ccDrawColor4B(255,255,255,255);ccDrawLine(ccp(0,0),ccp(480,320));CHECK_GL_ERROR_DEBUG();glLineWidth( 5.0f ); ccDrawColor4B(255,0,0,255); ccDrawLine(ccp(0,320), ccp(480,0));CHECK_GL_ERROR_DEBUG();//ccPointSize(128);这个没用啊 ccDrawColor4B(0,255,255,128); ccDrawPoint( ccp(240,200) ); CHECK_GL_ERROR_DEBUG();// 4个点一起画 CCPoint points[] = { ccp(60,60), ccp(70,70), ccp(60,70), ccp(70,60) }; ccPointSize(4); ccDrawColor4B(0,255,255,255); ccDrawPoints( points, 4);// draw a green circle with 10 segments glLineWidth(1); ccDrawColor4B(0, 255, 0, 255); ccDrawCircle( ccp(240,160),//圆心100,//半径1, //如果后面设置了从圆心到圆的连线为true的话,//这个值是连线的角度,0为水平向左,逆时针360,//将这个圆分为多少块true//是否有从圆心到圆的连线);//画一个多边形ccDrawColor4B(255, 255, 0, 255); glLineWidth(1); CCPoint vertices[] = { ccp(0,0), ccp(50,50), ccp(100,50), ccp(100,100), ccp(50,100) }; ccDrawPoly( vertices, 5, true//是否封闭); // 填充的多边形glLineWidth(1);CCPoint filledVertices[] = { ccp(0,120), ccp(50,120), ccp(50,170), ccp(25,200), ccp(0,170) };ccDrawSolidPoly(filledVertices, 5, ccc4f(0.5f, 0.5f, 1, 1 )//填充颜色);//贝塞尔曲线ccDrawColor4B(255, 255, 0, 255);ccDrawCubicBezier(ccp(0,0),//开始点ccp(50,50),//控制点ccp(250,100),//控制点ccp(300,300),//目标点100//分成多少段得到的曲线);// 还原默认值 glLineWidth(1); ccDrawColor4B(255,255,255,255); ccPointSize(1);}
在代码中的注释解释的很清楚,下面来一张效果图:
源代码的话,那就没有必要上传了,代码我都贴出来了。
- Cocos2d-x 图形绘制
- Cocos2d-x 绘制图形
- Cocos2d-x 图形绘制
- cocos2d-x图形绘制
- cocos2d-x 绘制图形
- cocos2d-x 绘制基本图形
- Cocos2d-x 绘制基本图形
- Cocos2d-x——DrawNode绘制图形
- cocos2d-x初探学习笔记(12)--图形绘制
- Cocos2d-x初入学堂(1)-->图形绘制
- 【Cocos2d-x游戏引擎开发笔记(18)】图形绘制
- Cocos2d-x初入学堂(1)-->图形绘制
- 【Cocos2d-x游戏引擎开发笔记(18)】图形绘制
- cocos2d-x初探学习笔记(12)--图形绘制
- cocos2D-X源码分析之从cocos2D-X学习OpenGL(5)---绘制基本图形
- Cocos2d-x--绘制图片
- cocos2d-x 简单绘制
- Cocos2d-x学习笔记(七)实例——绘制图形
- Java程序员面试中的多线程问题
- 开源的软件构件利器——SCons
- 将一个图片的url地址转换为一个bitmap图片
- linux 打包 解压 tar zip tgz等格式
- java优化占用内存的方法(一)
- Cocos2d-x 图形绘制
- android 文件断点续传下载,外加下载进度提示
- LDAP 轻量目录访问协议
- 国外技术,还是看英文文档好
- HIVE UDF/UDAF/UDTF
- ldconfig及 LD_LIBRARY_PATH
- Android开发之警惕static变量使用
- android 实用项目备份【GitHub】(二)
- url长度限制