cocos2d-x图形绘制

原创文章,转载请注明出处:http://blog.csdn.net/zhy_cheng/article/details/8480048

图形绘制的话,在cocos2d-x自带的TestCpp里有,包括绘制点,直线,多边形(填充的和没有填充的),圆,贝赛尔曲线。

 

首先在HelloWorld类中重写父类的draw方法

[cpp]  view plain copy
  1. virtual void draw();  


在源文件中将init中的类容删去,应为init方法比draw先执行,会覆盖我们画出的效果。删除之后,init方法如下

[cpp]  view plain copy
  1. bool HelloWorld::init()  
  2. {  
  3.     bool bRet = false;  
  4.     do   
  5.     {  
  6.         CC_BREAK_IF(! CCLayer::init());  
  7.         bRet = true;  
  8.     } while (0);  
  9.   
  10.     return bRet;  
  11. }  


然后在draw方法中写如下代码:

[cpp]  view plain copy
  1. void HelloWorld::draw()  
  2. {  
  3.     CHECK_GL_ERROR_DEBUG();  
  4.     /* 
  5.     画一条直线,默认的宽度是1,颜色是白色,不透明,glEnable(GL_LINE_SMOOTH); 
  6.     默认的情况下是后面不再设置颜色后线宽 
  7.     */  
  8.   
  9.     glLineWidth( 1.0f );  
  10.     ccDrawColor4B(255,255,255,255);  
  11.     ccDrawLine(ccp(0,0),ccp(480,320));  
  12.     CHECK_GL_ERROR_DEBUG();  
  13.   
  14.   
  15.   
  16.     glLineWidth( 5.0f );  
  17.     ccDrawColor4B(255,0,0,255);  
  18.     ccDrawLine(ccp(0,320), ccp(480,0));  
  19.     CHECK_GL_ERROR_DEBUG();  
  20.   
  21.   
  22.     //ccPointSize(128);这个没用啊  
  23.     ccDrawColor4B(0,255,255,128);  
  24.     ccDrawPoint( ccp(240,200) );  
  25.     CHECK_GL_ERROR_DEBUG();  
  26.   
  27.   
  28.     // 4个点一起画  
  29.     CCPoint points[] = { ccp(60,60), ccp(70,70), ccp(60,70), ccp(70,60) };  
  30.     ccPointSize(4);  
  31.     ccDrawColor4B(0,255,255,255);  
  32.     ccDrawPoints( points, 4);  
  33.   
  34.   
  35.   
  36.     // draw a green circle with 10 segments  
  37.     glLineWidth(1);  
  38.     ccDrawColor4B(0, 255, 0, 255);  
  39.     ccDrawCircle( ccp(240,160),//圆心  //DrawSolidCircle实心
  40.         100,//半径  
  41.         1, //如果后面设置了从圆心到圆的连线为true的话,  
  42.         //这个值是连线的角度,0为水平向左,逆时针  
  43.         360,//将这个圆分为多少块  
  44.         true//是否有从圆心到圆的连线  
  45.         );  
  46.   
  47.     //画一个多边形  
  48.     ccDrawColor4B(255, 255, 0, 255);  
  49.     glLineWidth(1);  
  50.     CCPoint vertices[] = { ccp(0,0), ccp(50,50), ccp(100,50), ccp(100,100), ccp(50,100) };  
  51.     ccDrawPoly( vertices, 5, true//是否封闭  
  52.         );  
  53.   
  54.   
  55.      // 填充的多边形  
  56.     glLineWidth(1);  
  57.     CCPoint filledVertices[] = { ccp(0,120), ccp(50,120), ccp(50,170), ccp(25,200), ccp(0,170) };  
  58.     ccDrawSolidPoly(filledVertices, 5, ccc4f(0.5f, 0.5f, 1, 1 )//填充颜色  
  59.         );  
  60.   
  61.   
  62.   
  63.     //贝塞尔曲线  
  64.     ccDrawColor4B(255, 255, 0, 255);  
  65.     ccDrawCubicBezier(ccp(0,0),//开始点  
  66.         ccp(50,50),//控制点  
  67.         ccp(250,100),//控制点  
  68.         ccp(300,300),//目标点  
  69.         100//分成多少段得到的曲线  
  70.         );  
  71.   
  72.   
  73.   
  74.     // 还原默认值  
  75.     glLineWidth(1);  
  76.     ccDrawColor4B(255,255,255,255);  
  77.     ccPointSize(1);  
  78.   
  79. }  


在代码中的注释解释的很清楚,下面来一张效果图:

cocos2d-x图形绘制_第1张图片

 

源代码的话,那就没有必要上传了,代码我都贴出来了。


你可能感兴趣的:(cocos2d-x图形绘制)