cocos2dx 裁剪图片时坐标取值说明

刚学cocos2dx。从小几何就没学好。看到坐标就犯晕,所以今天写了个例子来观察cocos2dx的坐标是杂回事。 首先参考【cocos2d-x官方文档】cocos2d-x坐标系详解:http://article.ityran.com/archives/3367

本篇文章例子主要是如何裁剪图片。

当锚点居中时,右下角的位置,0,0,图片宽度/2,图片高度/2。

当锚点居中时,左下角的位置,0,0,-图片宽度/2,图片高度/2。

当锚点居中时,右上角的位置,0,0,图片宽度/2,-图片高度/2。

当锚点居中时,右上角的位置,0,0,-图片宽度/2,-图片高度/2。

ps:截图:上 减(-),下 加(+)左 减(-)右 加(+)

下图片的位置! helloword.cpp, bool HelloWorld::init() 方法如下 <!-- lang: cpp -->

bool HelloWorld::init(){
// 1. super init first
if ( !CCLayer::init() )
{
    return false;
}

// 2. add a menu item with "X" image, which is clicked to quit the program
//    you may modify it.

// add a "close" icon to exit the progress. it's an autorelease object
CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
                                    "CloseNormal.png",
                                    "CloseSelected.png",
                                    this,
                                    menu_selector(HelloWorld::menuCloseCallback) );
pCloseItem->setPosition( ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20) );

// create menu, it's an autorelease object
CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
pMenu->setPosition( CCPointZero );
this->addChild(pMenu, 1);

// ask director the window size
CCSize size = CCDirector::sharedDirector()->getWinSize();


CCLayerColor *col = CCLayerColor::create(ccc4(128,128,128,255));
this->addChild(col, -10);

//    居中原图
CCSprite *pCoSprite = CCSprite::create("Icon-72.png");
CCSize spriteSize = pCoSprite->getContentSize();
pCoSprite->setPosition( ccp(size.width/2,size.height/2));
this->addChild(pCoSprite,-1);

//右下 ,裁剪时,假如图片的锚点为(0,0),右下角坐标:0,0,宽,高 
CCSprite *pRectSpriteRB = CCSprite::create("Icon-72.png",CCRect(spriteSize.width/2, spriteSize.height/2, spriteSize.width/2, spriteSize.height/2));
pRectSpriteRB->setPosition(ccp(size.width/2+spriteSize.width+pRectSpriteRB->getContentSize().width/2,size.height/2-spriteSize.height/2-pRectSpriteRB->getContentSize().height/2));
this->addChild(pRectSpriteRB);
//右下原图
CCSprite *pCoSpriteRB = CCSprite::create("Icon-72.png");
pCoSpriteRB->setPosition( ccp(size.width/2+spriteSize.width,size.height/2-spriteSize.height/2));
this->addChild(pCoSpriteRB,-1);

//  左下 ,裁剪时,假如图片的锚点为(0,0),左下角坐标:0,0,-宽,正高 
CCSprite *pRectSpriteLB = CCSprite::create("Icon-72.png",CCRect(spriteSize.width/2, spriteSize.height/2, -spriteSize.width/2, spriteSize.height/2));
pRectSpriteLB->setPosition(ccp(size.width/2-spriteSize.width,size.height/2-spriteSize.height/2));
this->addChild(pRectSpriteLB);

CCSprite *pCoSpriteLB = CCSprite::create("Icon-72.png");
pCoSpriteLB->setPosition( ccp(size.width/2-spriteSize.width,size.height/2-spriteSize.height/2));
this->addChild(pCoSpriteLB,-1);


//    右上,裁剪时,假如图片的锚点为(0,0),右上角坐标:0,0,宽,-高 
CCSprite *pRectSpriteRU = CCSprite::create("Icon-72.png",CCRect(spriteSize.width/2, spriteSize.height/2, spriteSize.width/2, -spriteSize.height/2));
pRectSpriteRU->setPosition(ccp(size.width/2+spriteSize.width,size.height/2+spriteSize.height));
this->addChild(pRectSpriteRU);
//    左上,裁剪时,假如图片的锚点为(0,0),左上角坐标:0,0,-宽,-高 
CCSprite *pRectSpriteLU = CCSprite::create("Icon-72.png",CCRect(spriteSize.width/2, spriteSize.height/2, -spriteSize.width/2, -spriteSize.height/2));
pRectSpriteLU->setPosition(ccp(size.width/2-spriteSize.width,size.height/2+spriteSize.height));
this->addChild(pRectSpriteLU);

return true;
}

下图为执行效果 执行效果

转载于:https://my.oschina.net/u/1053317/blog/134699

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值