`
rayln
  • 浏览: 431377 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

绘制图形

 
阅读更多
转载:http://book.2cto.com/201304/19843.html

在节点类CCNode中,可以重写draw函数并在其中绘制图形,如tests项目中DrawPrimitivesTest文件夹下DrawPrimitivesTest.cpp文件中的DrawPrimitivesTest类中的draw函数。

1)绘制直线。

参数分别为直线的起点和终点。如代码清单3-44所示。

代码清单3-44 绘制直线
ccDrawLine( ccp(0, 0), ccp(s.width, s.height) );


默认绘制的直线是白色的、不透明的、线宽是1并且是抗锯齿的。设置这些绘制参数后,绘制直线如代码清单3-45所示。

代码清单3-45 设置绘制参数后绘制直线
glLineWidth( 5.0f );
ccDrawColor4B(255,0,0,255);
ccDrawLine( ccp(0, s.height), ccp(s.width, 0) );


这里需要说明的是,OpenGL中是状态机,除非重新设置,否则这些参数都会保持到下一个状态。

2)绘制点。

如代码清单3-46所示,注意OpenGL中的点是正方形的。

代码清单3-46 绘制点
CCPoint points[] = { ccp(60,60), ccp(70,70), ccp(60,70), ccp(70,60) };
ccPointSize(4);
ccDrawColor4B(0,255,255,255);
ccDrawPoints( points, 4);


3)画圆。

函数的参数为圆心、半径、角度、分段数(将圆微分为直线)和是否与中心连线,如代码清单3-47所示。

代码清单3-47 画圆
glLineWidth(2);
ccDrawColor4B(0, 255, 255, 255);
ccDrawCircle( ccp(s.width/2, s.height/2), 50,    CC_DEGREES_TO_RADIANS(90), 50, true);


4)画多边形。

函数的参数为点数组、点数量和图形是否封闭,如代码清单3-48所示。

代码清单3-48 画多边形
ccDrawColor4B(255, 0, 255, 255);
glLineWidth(2);
CCPoint vertices2[] = { ccp(30,130), ccp(30,230), ccp(50,200) };
ccDrawPoly( vertices2, 3, true);


5)画贝塞尔曲线。

函数的第一个参数为一个控制点,第二个和第三个参数为两个控制点,最后一个参数为分段数,如代码清单3-49所示。

代码清单3-49 画贝塞尔曲线
CHECK_GL_ERROR_DEBUG();

// draw quad bezier path
ccDrawQuadBezier(ccp(0,s.height), ccp(s.width/2,s.height/2), ccp(s.width,s.height), 50);

CHECK_GL_ERROR_DEBUG();

// draw cubic bezier path
ccDrawCubicBezier(ccp(s.width/2, s.height/2), ccp(s.width/2+30,s.height/2+50), ccp(s.width/2+60,s.height/2-50),ccp(s.width, s.height/2),100);




注意 Cocos2D-x提供的绘制图形函数里没有绘制实心圆形的函数。需要绘制实心圆形时,请将ccDrawCircle函数(在CCDrawingPrimitives.cpp文件中)调用glDrawArrays函数时的第一个参数由GL_LINE_STRP改为GL_TRIANGLE_FAN即可。
分享到:
评论

相关推荐

    C#的GDI+绘制图形分层拖放操作源码

    在本文中,我们将深入探讨C#中的GDI+技术,特别是在绘制图形方面,特别是如何实现分层、拖放、缩放以及填充等高级功能。GDI+是.NET框架中的一个核心部分,它提供了丰富的图形绘制功能,使得程序员能够创建出交互式且...

    vue+canvas绘制图形

    首先,我们来看"vue+canvas绘制图形"这个主题。Vue组件是Vue.js的核心特性之一,它允许我们将UI拆分成独立、可复用的部分。在这个项目中,我们可以创建一个名为`Canvas.vue`的Vue组件,专门负责处理Canvas元素。在`...

    PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形

    今天我们就来介绍一下在PyQtGraph中根据实时数据更新绘制图形。 今天的例子我们通过编写一个电脑CPU实时使用率助手来讲解。 一、通过Python获取实时的CPU信息 在Windows操作系统的电脑上,我们通过“任务管理器”...

    用图形控件绘制图形实例 vb源码

    在VB(Visual Basic)编程环境中,使用图形控件来绘制图形是一种常见的方法,尤其适用于创建用户界面或进行简单的可视化操作。本实例通过`Form1.frm`、`工程1.vbp`和`工程1.vbw`这三个文件展示了如何在VB中实现这一...

    QT_QPaintPath跟随鼠标绘制图形(画笔)

    QT_QPaintPath跟随鼠标绘制图形(画笔)是Qt库中的一个高级特性,它允许开发者在界面上实时绘制复杂的形状,比如曲线、多边形等,同时能够与用户的交互进行紧密配合,例如跟随鼠标的移动。这个功能在图像处理、绘图...

    VisualBasic程序设计 形考任务四实验7绘制图形程序.zip

    "实验7绘制图形程序"旨在让学生掌握利用Visual Basic的绘图功能创建各种图形的技术,这对于理解和实现计算机图形界面(GUI)的设计至关重要。 Visual Basic提供了一个名为Form的窗口对象,我们可以在其上进行图形...

    VC接头绘制图形系统的设计和实现论文

    【标题】"VC接头绘制图形系统的设计和实现论文"主要涵盖了计算机图形学、软件工程以及Visual C++(VC++)编程技术的相关知识点。在这样的系统设计中,开发者通常需要利用图形用户界面(GUI)来实现对图形元素的创建、...

    计算机图形学-一笔绘制图形

    在"一笔绘制图形"这个主题中,我们主要关注的是如何通过算法和编程技术,用单一线条或者最少的笔触来构建复杂的图形,如矩形。这种技术在计算机艺术、游戏开发、用户界面设计等领域都有广泛应用。 在计算机图形学中...

    通过读取数据库mdb绘制图形

    标题 "通过读取数据库mdb绘制图形" 描述的是一个编程项目,该项目的目的是利用VC++这一编程语言,从mdb格式的数据库中提取数据,并根据这些数据生成图形。mdb是Microsoft Access数据库的文件扩展名,通常用于存储...

    java_在窗体中绘制图形

    java_在窗体中绘制图形.

    本示例实现在图像上绘制图形的画板

    在IT领域,尤其是在图形用户界面(GUI)设计和开发中,"在图像上绘制图形的画板"是一个常见的需求,特别是在交互式应用、绘图软件或教学工具中。本示例着重于创建一个功能丰富的画板,允许用户进行各种绘图操作,如...

    flash教程绘制图形

    flash教程 绘制图形 第六讲 绘制光斑

    如何在Web页中绘制图形

    在Web开发中,绘制图形是一项重要的技能,它可以让网页变得更加生动和交互性更强。本教程将探讨如何在Web页面上创建动态图形,并提供一个实例源码来帮助理解这一过程。 首先,我们需要了解基本的绘图工具。HTML5...

    android 绘制图形

    在Android手机开发中,绘制图形是一项重要的技能,它允许开发者创造出独特的用户界面和交互体验。Android提供了多种方式来实现图形绘制,包括使用Canvas、Bitmap、Path、Paint等类。让我们深入探讨这些基础知识。 ...

    使用Flash绘制图形优秀PPT.ppt

    "使用Flash绘制图形优秀PPT" 本资源是一个关于使用Flash绘制图形的PPT教程,旨在培养学生使用Flash工具箱中的工具绘制图形的方法和技巧。通过本章的学习,学生将掌握使用Flash工具箱中的各种工具绘制逼真的图形,...

    MFC 鼠标按下释放移动绘制图形及键盘操作

    这是MFC 鼠标按下释放移动绘制图形及键盘操作,通过这些事件让学生实现一个类似画图的简单软件,同时充分发挥学生想象,自己创作东西。 鼠标操作可以绘制图形 按键操作WASD方向进行绘制椭圆 MFC使用VC++ 6.0进行编写...

    使用GDI+绘制图形

    在探讨如何使用GDI+绘制图形之前,我们首先应该了解GDI+的基本概念。GDI+是微软公司推出的一种图形设备接口(GDI),它提供了一系列的图形和字体功能,可以用于Windows平台上应用程序的图形绘制。GDI+继承了GDI,并...

    C#绘制图形,矩形椭圆,直线

    - 使用Graphics对象:在控件(如PictureBox)的Paint事件处理程序中,你可以获取控件的Graphics对象,然后通过调用其DrawRectangle、DrawEllipse和DrawLine方法来绘制图形。 - Pen对象:创建Pen实例,设置其Width...

Global site tag (gtag.js) - Google Analytics