斜線状に消えていくアイコン
Posted: 2013年11月03日(日) 00:17
画面上に表示するアイコンを、左下から徐々に描画していき、右上まで達したら左下からまた消していくというのをやりたいのですが
どうしたらいいでしょうか?

どうしたらいいでしょうか?


#include "DxLib.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
ChangeWindowMode(TRUE);
if (DxLib_Init() != 0) return 0;
SetDrawScreen(DX_SCREEN_BACK);
int maskX = 0;
// Zバッファを使う準備
SetUseZBufferFlag(TRUE);
SetZBufferCmpType(DX_ZCMP_DEFAULT);
while (ProcessMessage() == 0 && ScreenFlip() == 0 && ClearDrawScreen() == 0) {
for (int i=0; i<8; i++) {
DrawBox(0, i*60, 640, i*60+60, GetColor((i&2)?192:0, (i&4)?192:0, (i&1)?192:0), TRUE);
}
// マスク部分をZバッファに反映させる準備
ClearDrawScreenZBuffer();
SetWriteZBufferFlag(TRUE);
SetDrawZ(0.2f);
// マスク部分を描画
SetDrawBlendMode(DX_BLENDMODE_ALPHA, 0); // 透明にする
DrawTriangle(maskX, 0, maskX+240, 480, maskX, 480, GetColor(255,0,0), TRUE);
DrawTriangle(maskX-240, 0, maskX, 0, maskX, 480, GetColor(255,0,0), TRUE);
SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0);
maskX += 4;
if (maskX > 640) { maskX -= 640; }
SetWriteZBufferFlag(FALSE); // Zバッファを更新するのはマスクだけで良い
SetDrawZ(0.3f);
DrawCircle(640/2, 480/2, 480/3, GetColor(255,255,255), TRUE);
}
DxLib_End();
return 0;
}
for(size_t i=0 ; i < ObjectList.size() ; i++){
VECTOR ScreenPos = ConvWorldPosToScreenPos(ObjectList[i]->GetPosition());
if(0.0f < ScreenPos.z && ScreenPos.z < 1.0f){
if(0.0f< ScreenPos.x && ScreenPos.x < WindowControl->GetXWindowSize()){
if(0.0f< ScreenPos.y && ScreenPos.y < WindowControl->GetYWindowSize()){
// マスク部分をZバッファに反映させる準備
ClearDrawScreenZBuffer();
SetWriteZBufferFlag(TRUE);
// マスク部分を描画
SetDrawBlendMode(DX_BLENDMODE_ALPHA, 0); // 透明にする
DrawTriangle(ScreenPos.x+maskX , ScreenPos.y, ScreenPos.x+maskX+240, ScreenPos.y+30, ScreenPos.x+maskX, ScreenPos.y+200, GetColor(255,0,0), TRUE);
DrawTriangle(ScreenPos.x+maskX-240 , ScreenPos.y, ScreenPos.x+maskX , ScreenPos.y , ScreenPos.x+maskX, ScreenPos.y+200, GetColor(255,0,0), TRUE);
SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0);
maskX += 4;
if (maskX > 640) { -= 640; }
SetWriteZBufferFlag(FALSE); // Zバッファを更新するのはマスクだけで良い
SetDrawZ(0.3f);
DrawFormatString(ScreenPos.x,ScreenPos.y,CursorColor[Force],ObjectList[i]->GetName().c_str());
SetDrawZ(0.2f);
}
}
}
}