Home » Tutorials » Grafik und Spiele » Bitmaps

Bitmaps

BitBlt/StretchBlt

Zwei weitere Funktionen, die sehr wichtig sind, um mit Bildern zu arbeiten, sind BitBlt und StretchBlt. Beide dienen dem Kopieren von Bitmaps, wobei sich bei StretchBlt das kopierte Bild dehnen und stauchen lässt.
Dies sind zwei Windowsfunktionen, das bedeutet, dass ihnen das Handle des jeweiligen Canvas als Device-Context übergeben werden muss. Es gibt allerdings auch die entsprechenden Delphi-Funktionen ‚TCanvas.CopyRect‘ und ‚TCanvas.StretchDraw‘, welche allerdings geringfügig langsamer sind.
Bevor jedoch StretchDraw zum Einsatz kommen soll, muss der Canvas, auf den das neue Bild gezeichnet werden soll, in den richtigen Modus zum stauchen und stretchen versetzt werden.
Dazu gibt es die Windows-Funktion ‚SetStretchBltMode‘. Mit dem Parameter HALFTONE lassen sich die besten Ergebnisse erzielen.
Am Ende der Parameterlisten beider Funktionen ist ein Parameter als sog. RasterOperationCode anzugeben, dieser bestimmt auf welche Weise die Pixel des Source-Canvas mit den Pixeln des Destination-Canvas verknüpft werden. SRCCOPY sorgt z.B. für das normale Kopieren, SRCINVERT sorgt für das invertierte Zeichnen des Bildes, und SRCAND verknüpft die beiden Bilder miteinander.

Beispiel

Dieses Beispiel kopiert das Bild ‚Pict‘ invertiert und gestaucht auf das Formular:

SetStretchBltMode(Canvas.Handle, HALFTONE);
StretchBlt(Canvas.Handle, 10, 10, 100, 100, Pict.Canvas.Handle, 0, 0,
  Pict.Width, Pict.Height, SRCINVERT);

So, dies sollte fürs erste reichen, viel Spaß beim Rumprobieren, to be continued…