View Single Post
Old 22-09-2002, 13:07   #30
misterx
Senior Member
 
Iscritto dal: Apr 2001
Cittā: Milano
Messaggi: 3741
int xOrig , yOrig;
double Angolo, cosAngolo, sinAngolo;

RGBTRIPLE *RigaOriginale, *RigaRuotata;

Graphics::TBitmap *MiaBitmap = new Graphics::TBitmap;

MiaBitmap->Width = Image1->Width;
MiaBitmap->Height = Image1->Height;
MiaBitmap->PixelFormat = pf24bit;

for(int Gradi = 0; Gradi <= 360; Gradi++)
{
Angolo = -Gradi * M_PI/180;

sinAngolo = sin(Angolo);
cosAngolo = cos(Angolo);

for ( int y = MiaBitmap->Height-1; y >= 0 ; y--)
{
RigaOriginale = (RGBTRIPLE*)Image1->Picture->Bitmap->ScanLine[y];
RigaRuotata = (RGBTRIPLE*)MiaBitmap->ScanLine[y];

for ( int x = BitmapRotated->Width-1; x >= 0; x--)
{
xOrig = int(x * cosAngolo - y * sinAngolo);
yOrig = int(x * sinAngolo + y * cosAngolo);

if ( (xOrig >= 0) && (xOrig <= Image1->Width-1) &&
(yOrig >= 0) && (yOrig <= Image1->Height-1) )
{
RigaRuotata[x] = RigaOriginale[xOrig];
}
else
{
RigaRuotata[x].rgbtBlue = 0;
RigaRuotata[x].rgbtGreen = 0;
RigaRuotata[x].rgbtRed = 0;
}
}
}

Image2->Picture->Bitmap = MiaBitmap;
misterx č offline   Rispondi citando il messaggio o parte di esso