ホイールの画像を連続的に回転しようとしています。私は一度だけホイールを回転させることができました。しかし、私はその車輪を連続的に回転させたい。助けが必要。ここ は、コードは次のとおりです。C++でホイールのイメージを連続的に回転させるには?
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int angle = 45; //45° for example
Graphics::TBitmap *SrcBitmap = new Graphics::TBitmap;
Graphics::TBitmap *DestBitmap = new Graphics::TBitmap;
SrcBitmap->LoadFromFile("image1.bmp");
//Convert degrees to radians
float radians = (2*3.1416*angle)/360;
float cosine = (float)cos(radians);
float sine = (float)sin(radians);
float Point1x = (-SrcBitmap->Height*sine);
float Point1y = (SrcBitmap->Height*cosine);
float Point2x = (SrcBitmap->Width*cosine-SrcBitmap->Height*sine);
float Point2y = (SrcBitmap->Height*cosine+SrcBitmap->Width*sine);
float Point3x = (SrcBitmap->Width*cosine);
float Point3y = (SrcBitmap->Width*sine);
float minx = min(0,min(Point1x,min(Point2x,Point3x)));
float miny = min(0,min(Point1y,min(Point2y,Point3y)));
float maxx = max(Point1x,max(Point2x,Point3x));
float maxy = max(Point1y,max(Point2y,Point3y));
int DestBitmapWidth = (int)ceil(fabs(maxx)-minx);
int DestBitmapHeight = (int)ceil(fabs(maxy)-miny);
DestBitmap->Height = DestBitmapHeight;
DestBitmap->Width = DestBitmapWidth;
Form1->Refresh();
for (int x=0; x < DestBitmapWidth; x++)
{
for (int y=0; y < DestBitmapHeight; y++)
{
int SrcBitmapx = (int)((x+minx)*cosine+(y+miny)*sine);
int SrcBitmapy = (int)((y+miny)*cosine-(x+minx)*sine);
if (SrcBitmapx >=0 && SrcBitmapx < SrcBitmap->Width
&& SrcBitmapy >=0 && SrcBitmapy < SrcBitmap->Height)
{
DestBitmap->Canvas->Pixels[x][y] =
SrcBitmap->Canvas->Pixels[SrcBitmapx][SrcBitmapy];
}
}
}
//Show the rotated bitmap
Image1->Picture->Bitmap=DestBitmap;
delete DestBitmap;
delete SrcBitmap;
}
ここで、xとyを変更しますか? – Flot2011