Dessiner sur un bitmap

De RAD Studio
Aller à : navigation, rechercher

Remonter à Utilisation des graphiques et du multimédia - Index


Pour dessiner sur un bitmap, utilisez le canevas du contrôle image et attachez les gestionnaires d'événements de souris aux événements appropriés du contrôle image. Typiquement, vous devriez utiliser des opérations sur des régions (rectangles, polylignes et ainsi de suite). Ce sont des méthodes rapides et efficaces pour dessiner.

Un moyen efficace de dessiner des images lorsque vous avez besoin d'accéder de manière individuelle aux pixels est d'utiliser la propriété Vcl.Graphics.TBitmap.ScanLine. Pour une utilisation plus générale, vous pouvez définir un format de pixels de 24 bits et traiter le pointeur renvoyé par ScanLine comme un tableau de couleurs RGB. Vous devrez sinon connaître le format natif de la propriété ScanLine. Cet exemple explique comment utiliser ScanLine pour extraire des pixels ligne par ligne.

procedure TForm1.Button1Click(Sender: TObject);
// This example shows drawing directly to the 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();
	// This example shows drawing directly to the Bitmap
	Byte *ptr;
	try {
		pBitmap->LoadFromFile("C:\\Program Files\\Borland\\CBuilder\\Images\\Splash\\256color\\
factory.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;
}

Voir aussi