前回からいろいろ変更してみました。
作っていただいた関数を使っているのですが
うまくいきません。
変な場所に表示されてしまいます。
折角作っていただいたのに申し訳ないです。
またたまにEscなどで終了させるとウインドウがあった位置だけが真っ黒くなり
どうやってもけせなくなるバグが起きてしまいます。
これは描画の仕方が悪いのでしょうか。
void Draw(int x1,int y1,int x2,int y2,int x3,int y3,int Zx,int Zy,int BMP,unsigned int color,bool turn,bool center,int rot){
XY Size;
XY LeftUp,RightUp,LeftDown,RightDown; // 描画座標
int hGraph = BMP;
bool DeleteF = false;
GetGraphSize(BMP,&Size.x,&Size.y); // グラフィックのサイズの取得
if(x2==0 && y2==0 && x3==Size.x && y3==Size.y){
}else{
hGraph = DerivationGraph(x2,y2,x3,y3,BMP);
DeleteF = true;
}
// 各座標の取得
if(center == true){
LeftUp.x = x1-Size.x/2;
LeftUp.y = y1-Size.y/2;
RightUp.x = x1+Size.x/2;
RightUp.y = y1-Size.y/2;
LeftDown.x = x1-Size.x/2;
LeftDown.y = y1+Size.y/2;
RightDown.x = x1+Size.x/2;
RightDown.y = y1+Size.y/2;
CalcRotatePnt(LeftUp.x,LeftUp.y,x1,y1,rot,&LeftUp.x,&LeftUp.y);
CalcRotatePnt(RightUp.x,RightUp.y,x1,y1,rot,&RightUp.x,&RightUp.y);
CalcRotatePnt(RightDown.x,RightDown.y,x1,y1,rot,&RightDown.x,&RightDown.y);
CalcRotatePnt(LeftDown.x,LeftDown.y,x1,y1,rot,&LeftDown.x,&LeftDown.y);
}else{
LeftUp.x = x1;
LeftUp.y = y1;
RightUp.x = x1+x3;
RightUp.y = y1;
LeftDown.x = x1;
LeftDown.y = y1+y3;
RightDown.x = x1+x3;
RightDown.y = y1+y3;
CalcRotatePnt(LeftUp.x,LeftUp.y,LeftUp.x+x3/2,LeftUp.y+y3/2,rot,&LeftUp.x,&LeftUp.y);
CalcRotatePnt(RightUp.x,RightUp.y,RightUp.x-x3/2,RightUp.y+y3/2,rot,&RightUp.x,&RightUp.y);
CalcRotatePnt(RightDown.x,RightDown.y,RightDown.y-x3/2,RightDown.y-y3/2,rot,&RightDown.x,&RightDown.y);
CalcRotatePnt(LeftDown.x,LeftDown.y,x1+x3/2,y1-y3/2,rot,&LeftDown.x,&LeftDown.y);
}
// 各座標の回転 90などといれる角度の方 ディグリー角?
// LRフラグがtrueなら各座標の反転
SetDrawBlendMode(DX_BLENDMODE_ALPHA,( color>>24 ));
SetDrawBright( ( color & 0xFF0000 ) >> 16, ( color & 0x00FF00 ) >> 8, ( color & 0x0000FF ) );
DrawModiGraph( LeftUp.x , LeftUp.y , RightUp.x , RightUp.y , RightDown.x , RightDown.y , LeftDown.x , LeftDown.y , hGraph , true ) ;
SetDrawBright(255,255,255);
SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0 );
if(DeleteF) DeleteGraph(hGraph);
}