Cocos2D-X2.2.3学习笔记11(贝塞尔曲线)

好的,今天我们来学习一下贝塞尔曲线,上次我们忘记总结了,放了两天假,又被我忘得差不多了,哎!学了马上就忘,忘了又回头重来。这毛病总这样。。。。


貌似我记得好像是要重写draw函数,在里面写画图操作就可以了吧!呃,应该是这样


还有几个常用的函数:

glLineWidth()  设置线的大小

ccDrawColor4B() 设置线的颜色

ccPointSize() 设置点的大小

上一节我们好像还遇到一个问题,就是画一个点,设置半透明的时候我们用ccDrawColor4F 貌似没效果

所以我们采用的ccDrawColor4B()


记得还原画笔哦

 glLineWidth(1);  
    ccDrawColor4B(255,255,255,255);  
    ccPointSize(1); 


ok,我们开始这次的学习

#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__

#include "cocos2d.h"

class HelloWorld : public cocos2d::CCLayer
{
public:
    // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
    virtual bool init();  

    // there's no 'id' in cpp, so we recommend returning the class instance pointer
    static cocos2d::CCScene* scene();
    
	virtual void draw();
    
    // implement the "static node()" method manually
    CREATE_FUNC(HelloWorld);
};

#endif // __HELLOWORLD_SCENE_H__

#include "HelloWorldScene.h"

USING_NS_CC;

CCScene* HelloWorld::scene()
{
	// 'scene' is an autorelease object
	CCScene *scene = CCScene::create();

	// 'layer' is an autorelease object
	HelloWorld *layer = HelloWorld::create();

	// add layer as a child to scene
	scene->addChild(layer);

	// return the scene
	return scene;
}

// on "init" you need to initialize your instance
bool HelloWorld::init()
{
	//
	// 1. super init first
	if ( !CCLayer::init() )
	{
		return false;
	}



	return true;
}
void HelloWorld::draw()
{

}

呃!我们首先来画个简单点的贝塞尔曲线,

void HelloWorld::draw()
{
	CCSize visibleSize= CCDirector::sharedDirector()->getVisibleSize();
	ccDrawColor4B(255,0,0,255);
	//绘制一个控制点的贝塞尔曲线
	//参数1:绘制的起点
	//参数2:控制点
	//参数3:绘制的终点
	//参数4:段,就像绘制圆一样的,段越大越平滑
	ccDrawQuadBezier(ccp(0,visibleSize.height),ccp(visibleSize.width/2,visibleSize.height/2),ccp(visibleSize.width,visibleSize.height),100);

	//还原画笔  
    glLineWidth(1);  
    ccDrawColor4B(255,255,255,255);  
    ccPointSize(1); 
}


呃,我刚才想着要介绍什么来着...一时间走起了    哎哟  我去......


对,控制点,我们很迷茫,控制点是个什么东西呢?



这就是一个控制点的贝塞尔曲线图

p0  起点

p1  控制点

p2  终点


好了,理解了之后我们来绘制有两个控制点的贝塞尔曲线

void HelloWorld::draw()
{
	CCSize visibleSize= CCDirector::sharedDirector()->getVisibleSize();
	ccDrawColor4B(255,0,0,255);
	//绘制一个控制点的贝塞尔曲线
	//参数1:绘制的起点
	//参数2:控制点
	//参数3:绘制的终点
	//参数4:段,就像绘制圆一样的,段越大越平滑
	//ccDrawQuadBezier(ccp(0,visibleSize.height),ccp(visibleSize.width/2,visibleSize.height/2),ccp(visibleSize.width,visibleSize.height),100);

	//绘制一个控制点的贝塞尔曲线
	//参数1:绘制的起点
	//参数2:控制点1
	//参数3:控制点2
	//参数4:绘制的终点
	//参数5:段,就像绘制圆一样的,段越大越平滑
	ccDrawCubicBezier(ccp(0,visibleSize.height/2),ccp(visibleSize.width+50,visibleSize.height/2+150),ccp(visibleSize.width/2+100,visibleSize.height/2-150),ccp(visibleSize.width,visibleSize.height/2),500);

	//还原画笔  
    glLineWidth(1);  
    ccDrawColor4B(255,255,255,255);  
    ccPointSize(1); 
}



有两个控制点的贝塞尔曲线图如下



总之这些个控制点什么什么的,靠心是把握不了的,貌似PS中有可以掩饰的


总结一下:

如何修改线的颜色    CCDrawColor4B

修改线宽 glLineWidth

修改点大小    ccPointSize

至于画什么东东,  CCDraw然后又自动提示的,看看方法名就清楚了





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值