Hi!
Ich habe gerade ein kleines Problem die richtigen BitBlt-Operationen zu finden, die mich zum Ziel bringen.
Ein TImage und ein TGraphicControl liegen auf einem Panel. Der GraphicControl zeichnet ein Rechteck welches
die invertierte Hintergrundfarbe (also des TImage) haben soll. Mit anderen Worten: Stellen die auf dem
TImage weiß sind, sind auf dem Rechteck schwarz und umgekehrt. Bei den Farben dazwischen muss es natürlich
gemischt werden. Warum? Das Rechteck soll einen Crop-Bereich festlegen und immer super zu sehen sein.
Ich habe schon alle BitBlt Parameter durchprobiert, wober MERGEPAINT dem Ziel am ähnlichsten ist.
Code:
Delphi-Quellcode:
procedure TAreaSelect.Paint;
var
I: Integer;
TempBitmap: TBitmap;
begin
inherited;
TempBitmap := TBitmap.Create;
FillBitmapWithColor(TempBitmap, clWhite);
TempBitmap.TransparentColor := clWhite;
TempBitmap.Transparent := True;
TempBitmap.Width := Canvas.ClipRect.Right;
TempBitmap.Height := Canvas.ClipRect.Bottom;
TempBitmap.Canvas.Rectangle(FCalcRect.Corners);
BitBlt(Canvas.Handle, 0, 0, TempBitmap.Width, TempBitmap.Height, TempBitmap.Canvas.Handle, 0, 0, MERGEPAINT);
FreeAndNil(TempBitmap);
Danke für Eure Tipps!
Sebastian