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


     

  • 相关阅读:
    linux shell script
    API Gateway : Kong
    rabbitmq management advance lesson
    Python Base HTTP Server
    linux 笔试题
    dll return a string
    friend class
    GCC 编译使用动态链接库 LD
    设计模式学习(四)——单例模式
    简单聊聊TestNG中的并发
  • 原文地址:https://www.cnblogs.com/mqxnongmin/p/10774946.html
Copyright © 2020-2023  润新知