用cocos2d-x绘制平滑的贝塞尔曲线
Draw smooth Bezier curve with cocos2d-x
这个问题可能重复,但我不知道如何在我的应用程序中应用这种方法,也不知道应该在cocos2d-x中使用哪种方法来绘制贝塞尔曲线。我的应用程序应该允许用户在触摸画布时绘制线条和曲线。我怎样才能做到这一点?
从Cocos2dx v3.3,您可以使用DrawNode绘制Bezier曲线。检查DrawPrimitivesTest.cpp,它非常容易使用。这只是从上述文件中提取的一个示例脚本。你可以在你的场景中的任何地方使用它:
auto draw = DrawNode::create();
addChild(draw, 10);
auto s = Director::getInstance()->getWinSize();
draw->drawQuadBezier(Vec2(0, s.height), Vec2(s.width/2, s.height/2), Vec2(s.width, s.height), 50, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5));
draw->drawCubicBezier(VisibleRect::center(), Vec2(VisibleRect::center().x+30,VisibleRect::center().y+50), Vec2(VisibleRect::center().x+60,VisibleRect::center().y-50),VisibleRect::right(),100, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5));
在CCDrawPrimitives.cpp文件中。
你可以使用这个方法。
ccDrawCubicBezier
ccDrawQuadBezier
-MyClass::draw() {
glLineWidth(4.0f);
ccPointSize(4);
//Draw a blue quadratic bezier curve
ccDrawColor4B(0, 0, 255, 255);
ccDrawQuadBezier(ccp(90,0), ccp(200, 70), ccp(350,0), 12);
//Draw cubic red bezier curve
ccDrawColor4B(255, 0, 0, 255);
ccDrawCubicBezier(ccp(100,100), ccp(300,150), ccp(250,50), ccp(350,100), 12);
//Restore original values
glLineWidth(1);
ccDrawColor4B(255,255,255,255);
ccPointSize(1);
}
您可能知道,每次移动触摸位置时,都会调用ccTouchesMoved方法
可以使用方法和成员变量控制曲线形状。
相关文章:
- CGAL:如何创建填充边界曲线的曲面网格?
- 构造对象 c++ (cocos2d-x) 时的区别
- 使用 SFML 绘制曲线会给出错误的形状
- 使用 GSL 库制作样条曲线并使用它们进行集成
- 扩充矩阵的行缩减-三维样条曲线计算
- 向心Catmull-Rom样条曲线插值alpha参数
- 如何避免 Cocos2d-x 3.15.1 中的 MenuItemImage 和 MenuItemSprite 之间的冲突
- 使用 C++ 在 Qt5 中显示曲线
- Cocos2D-X:从内存中读取 MP3 数据
- 如何在 cocos2d-x 3.17v 中创建字符串数组
- 如何使用 cocos creator 在 Cocos2d-X/Cocos2d-JS 中调用 javascript 函数并
- 音乐和音效无法在win32平台上播放?(Cocos2D-X)
- Cocos2d-x TiledMap,在调用 getLayer() 获取碰撞层时返回一个 nullptr?
- 为什么精灵在 cocos2d-x 中颤抖
- Hermite曲线中的切线值
- c 击曲线在代表前打电话给COUT
- 创建给定最小值、最大值和长度的曲线
- 使用 c++ 在 OpenGL 中绘制贝塞尔曲线的切线
- 当对象脱离范围时,C 会调用击曲线吗?
- 用cocos2d-x绘制平滑的贝塞尔曲线