Einzelnen Beitrag anzeigen

Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#1

Auswahl-Rechteck mit invertiertem Hintergrund als Farbe

  Alt 23. Mai 2005, 19:45
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
Sebastian
  Mit Zitat antworten Zitat