Einzelnen Beitrag anzeigen

Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Transparentes Rechteck zeichnen

  Alt 25. Jun 2007, 20:26
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!
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat