Dessiner sur un bitmap
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;
}