首页 > 代码库 > cocos2d-x 绘制图形
cocos2d-x 绘制图形
转载请注明出处:http://blog.csdn.net/oyangyufu/article/details/25841727
绘制图形如下:
程序代码:
需要重新定义父类虚函数draw()
1、在HelloWorldScene.h头文件加入:
virtual void draw();
2、定义实现:
void HelloWorld::draw(){ //add your code.... CHECK_GL_ERROR_DEBUG(); CCSize size = CCDirector::sharedDirector()->getVisibleSize(); //线宽为1,蓝色线,不透明 //ccDrawLine参数1:绘制起点坐标, 参数2:终点坐标 glLineWidth( 1.0f ); ccDrawColor4B(0,0,255,0); ccDrawLine(ccp(0, 640,), ccp(960, 0) ); CHECK_GL_ERROR_DEBUG(); //线宽为5,红色线,不透明 //ccDrawLine参数1:绘制起点坐标, 参数2:终点坐标 glLineWidth( 5.0f ); ccDrawColor4B(255,0,0,255); ccDrawLine(ccp(0, 0,), ccp(960, 640) ); CHECK_GL_ERROR_DEBUG(); //设置OpenGL点的大小, 默认是正方形 //ccDrawLine参数:绘制位置 //ccPointSize(80); //ccDrawColor4B(0,0,255,128);//设置颜色 //ccDrawPoint( ccp(size.width/2, size.height/2) ); CHECK_GL_ERROR_DEBUG(); // 画4个点的正方形 CCPoint points[] = { ccp(60,60), ccp(70,70), ccp(60,70), ccp(70,60) };//四个点位置 ccPointSize(80); ccDrawColor4B(0,255,255,255); ccDrawPoints( points, 4); CHECK_GL_ERROR_DEBUG(); //在屏中间画一个由10段组成的圆, 与圆中心不连线 //ccDrawCircle参数1:圆心位置;参数2:半径;参数3:角度;参数4:分段数;参数5:是否与圆中心连线 glLineWidth(16);//宽度 ccDrawColor4B(0, 255, 0, 255);//颜色 ccDrawCircle(ccp(size.width/2, size.height/2), 100, 0, 10, false); CHECK_GL_ERROR_DEBUG(); // 在屏中间画一个由50段组成的圆,与圆中心连线 glLineWidth(2); ccDrawColor4B(0, 255, 255, 255); ccDrawCircle( ccp(size.width/2, size.height/2), 50, CC_DEGREES_TO_RADIANS(90), 50, true); CHECK_GL_ERROR_DEBUG(); //画点数为5的多边形 //ccDrawPoly参数1:点数组;参数2:点数;参数3:图形是否闭合 ccDrawColor4B(255, 255, 0, 255); glLineWidth(10); CCPoint vertices[] = { ccp(0,0), ccp(50,50), ccp(100,50), ccp(100,100), ccp(50,100) }; ccDrawPoly( vertices, 5, false); CHECK_GL_ERROR_DEBUG(); // 画点数为5的闭合多边形, 并填充颜色 //ccDrawSolidPoly参数1:点数组;参数2:点数;参数3:填充颜色 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 ) ); // 画三角形 //ccDrawPoly参数1:点数组;参数2:点数;参数3:图形是否闭合 ccDrawColor4B(255, 0, 255, 255); glLineWidth(2); CCPoint vertices2[] = { ccp(130,230), ccp(130,330), ccp(150,300) }; ccDrawPoly( vertices2, 3, true); CHECK_GL_ERROR_DEBUG(); // 画塞尔曲线 //参数1:线起点位置;参数2:线中心点位置;参数3:线终点位置;参数4:线条段数 ccDrawQuadBezier(ccp(0, 640-100),ccp(size.width/2, size.height/2-100),ccp(960, 640-100), 90); CHECK_GL_ERROR_DEBUG(); //画有4个控制点的塞尔曲线 ccDrawCubicBezier(ccp(size.width/2, size.height/2), ccp(size.width/2+100, size.height/2+150), ccp(size.width/2+200, size.height/2-80),ccp(960, 300),100); CHECK_GL_ERROR_DEBUG(); //画黄色斜矩形 CCPoint vertices3[] = {ccp(60,160), ccp(70,190), ccp(100,190), ccp(90,160)}; ccDrawSolidPoly( vertices3, 4, ccc4f(1,1,0,1) ); // 完成后重置一下绘制状态 glLineWidth(1); ccDrawColor4B(255,255,255,0); ccPointSize(1); CHECK_GL_ERROR_DEBUG();}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。