您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-x图形绘制

2013-12-08 10:41 274 查看
原创文章,转载请注明出处:/article/1389504.html

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



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

[cpp] view
plaincopy

virtual void draw();

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

[cpp] view
plaincopy

bool HelloWorld::init()

{

bool bRet = false;

do

{

CC_BREAK_IF(! CCLayer::init());

bRet = true;

} while (0);



return bRet;

}

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

[cpp] view
plaincopy

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),//圆心
//DrawSolidCircle实心

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);



}

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





源代码的话,那就没有必要上传了,代码我都贴出来了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: