Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
Delphi 2010 Professional
|
Re: Transparentes Rechteck zeichnen
25. Jun 2007, 19:28
Hallo Fabian,
meinst du so etwas?
Delphi-Quellcode:
// zeichnet ein transparentes Rechteck
//
// aCanvas Ziel-Canvas
// aRect Zeichenbereich
// aColor Füllfarbe
// aIntensity Intensität (0=min, 255=max)
procedure AlphaBlendRect (const aCanvas: TCanvas;
const aRect: TRect;
const aColor: TColor;
const aIntensity: Byte);
var
w, h : Integer;
Bitmap : TBitmap;
BlendParams : TBlendFunction;
begin
w := Succ(aRect.Right - aRect.Left);
h := Succ(aRect.Bottom - aRect.Top);
Bitmap := TBitmap.Create;
try
Bitmap.Width := w;
Bitmap.Height := h;
Bitmap.Canvas.Brush.Color := ColorToRGB(aColor);
Bitmap.Canvas.FillRect (Rect(0, 0, w, h));
BlendParams.BlendOp := AC_SRC_OVER;
BlendParams.BlendFlags := 0;
BlendParams.SourceConstantAlpha := aIntensity;
BlendParams.AlphaFormat := 0;
Windows.AlphaBlend(aCanvas.Handle, aRect.Left, aRect.Top, w, h,
Bitmap.Canvas.Handle, 0, 0, w, h,
BlendParams);
finally
Bitmap.Free;
end;
end;
Gruß Hawkeye
|
|
Zitat
|