cocos2dx 裁剪圖片時座標取值說明

剛學cocos2dx。從小几何就沒學好。看到座標就犯暈,因此今天寫了個例子來觀察cocos2dx的座標是雜回事。 首先參考【cocos2d-x官方文檔】cocos2d-x座標系詳解:http://article.ityran.com/archives/3367ui

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

當錨點居中時,右下角的位置,0,0,圖片寬度/2,圖片高度/2。code

當錨點居中時,左下角的位置,0,0,-圖片寬度/2,圖片高度/2。orm

當錨點居中時,右上角的位置,0,0,圖片寬度/2,-圖片高度/2。圖片

當錨點居中時,右上角的位置,0,0,-圖片寬度/2,-圖片高度/2。文檔

ps:截圖:上 減(-),下 加(+)左 減(-)右 加(+)get

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

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;
}

下圖爲執行效果 執行效果io

相關文章
相關標籤/搜索