![]() |
Auswahl-Rechteck mit invertiertem Hintergrund als Farbe
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:
Danke für Eure Tipps!
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); Sebastian |
Re: Auswahl-Rechteck mit invertiertem Hintergrund als Farbe
du kannst das ganze auch mit scanline manuell machen. (muss natürlich noch angepasst werden wenn es nur für ein gewissen bereich sein soll)
Delphi-Quellcode:
procedure InvertBitmap(ABitmap: TBitmap);
type TPixRow = array[0..65000] of TRGBTriple; PPixRow = ^TPixRow; var ARow: PPixRow; LCountX, LCountY: Integer; LPixel: PRGBTriple; begin ABitmap.PixelFormat := pf24bit; for LCountY := 0 to ABitmap.Height - 1 do begin ARow := ABitmap.ScanLine[LCountY]; for LCountX := 0 to ABitmap.Width - 1 do begin LPixel := @ARow[LCountX]; LPixel.rgbtBlue := not(LPixel.rgbtBlue); LPixel.rgbtGreen := not(LPixel.rgbtGreen); LPixel.rgbtRed := not(LPixel.rgbtRed); end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz