In Bitmaps zeichnen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Bild-Steuerelemente hinzufügen

Um in einem Bitmap zu zeichnen, verwenden Sie die Zeichenfläche des Bild-Steuerelements und verbinden die Behandlungsroutinen für Mausereignisse mit den entsprechenden Ereignissen des Bild-Steuerelements. Normalerweise werden Sie hierfür Bereichsoperationen verwenden (Füllungen, Rechtecke, Linienzüge usw.). Diese ermöglichen ein schnelles und effektives Zeichnen.

Zum Zugriff auf einzelne Pixel steht Ihnen die Bitmap-Eigenschaft Vcl.Graphics.TBitmap.ScanLine zur Verfügung. Im Normalfall setzen Sie das Pixel-Format des Bitmaps auf 24 Bit und behandeln den Zeiger, der von ScanLine zurückgegeben wird, als RGB-Array. Andernfalls müssen Sie das native Format der Eigenschaft ScanLine kennen. Das folgende Beispiel illustriert, wie mit der Eigenschaft ScanLine Pixel zeilenweise ermittelt werden können:

procedure TForm1.Button1Click(Sender: TObject);
// Dieses Beispiel zeigt die direkte Ausgabe in ein Bitmap
var
x,y : integer;
Bitmap : TBitmap;
P : PByteArray;
begin
  Bitmap := TBitmap.create;
  try
    Bitmap.LoadFromFile("C:\mygraphic.bmp");
    for y := 0 to Bitmap.height -1 do
    begin
      P := Bitmap.ScanLine[y];
      for x := 0 to Bitmap.width -1 do
        P[x] := y;
    end;
    canvas.draw(0,0,Bitmap);
  finally
      Bitmap.free;
  end;
end;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Graphics::TBitmap *pBitmap = new Graphics::TBitmap();
// Dieses Beispiel zeigt die direkte Ausgabe in ein Bitmap
Byte *ptr;
try
{
  pBitmap->LoadFromFile("C:\\mygraphic.bmp");
  for (int y = 0; y < pBitmap->Height; y++)
{
    ptr = pBitmap->ScanLine[y];
    for (int x = 0; x < pBitmap->Width; x++)
    ptr[x] = (Byte)y;
}
  Canvas->Draw(0,0,pBitmap);
}
catch (...)
{
  ShowMessage("Could not load or alter bitmap");
}
delete pBitmap;
}

Siehe auch