Efekt odbicia bitmapy w pionie

Aby po kliknięciu przycisku Button1 bitmapa, która jest załadowana do komponentu Image1 została odbita w pionie tworzymy w zdarzeniu OnClick przycisku Button1 dynamicznie obiekt TBitmap reprezentujący bitmapę, ustawiamy jej rozmiary, a następnie za pomocą dwóch pętli for rysujemy na niej w odpowiednich miejscach piksele z obrazka Image1 (da to efekt odbicia bitmapy w pionie), na końcu przypisujemy tymczasową bitmapę do komponentu Image1 i usuwamy ją z pamięci:

Unit1.cpp

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   int x, y;
   int width, height;
   Graphics::TBitmap* tmpBMP = new Graphics::TBitmap;

   tmpBMP->Height = Image1->Height;
   tmpBMP->Width = Image1->Width;
   width = Image1->Width-1;
   height = Image1->Height-1;

   for (y = 0; y <= height; y++)
      for (x = 0; x <= width; x++)
      {
         tmpBMP->Canvas->Pixels[x][y] = Image1->Canvas->Pixels[x][height-y];
         Application->ProcessMessages();
      }

   Image1->Picture->Bitmap->Assign(tmpBMP);
   delete tmpBMP;
}