Zitat von
Hawkeye219:
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
Danke Hawkeye! Die Funktion ist perfekt und erzeugt sogar Polygone
Danke ^^
Wenn muss/soll ich als Autor der Funktion nennen? Dich oder hast du die Funktion vielleicht von voandersher?
@ DeddyH: Sry, aber Hawkeyes Code ist übersichtlicher
Und funktioniert gut!