Einzelnen Beitrag anzeigen

Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Transparentes Rechteck zeichnen

  Alt 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
  Mit Zitat antworten Zitat