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

}


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值