Einzelnen Beitrag anzeigen

Der_Ventilator

Registriert seit: 11. Apr 2004
Ort: Kanada
136 Beiträge
 
Delphi 2010 Professional
 
#1

Wie schwarze Buchstaben auf bunten Hintergrund schreiben?

  Alt 25. Dez 2005, 17:46
Hi,
ich habe ein canvas, auf das ich einen Gradienten gezeichnet habe (einen Verlauf von gelb nach grün):

Delphi-Quellcode:
procedure DrawGradient(const Canvas: TCanvas; Color1, Color2: TColor; Rect: TRect);
var
  Y, R, G, B: Integer;
  RColor1, GColor1, BColor1: Integer;
  RColor2, GColor2, BColor2: Integer;
begin
  Color1:=ColorToRGB(Color1);
  Color2:=ColorToRGB(Color2);

  RColor1:=GetRValue(Color1);
  GColor1:=GetGValue(Color1);
  BColor1:=GetBValue(Color1);

  RColor2:=GetRValue(Color2);
  GColor2:=GetGValue(Color2);
  BColor2:=GetBValue(Color2);

  Canvas.Pen.Width:=1;
  Canvas.Pen.Style:=psInsideFrame;

  for Y:=Rect.Top to Rect.Bottom-1 do
  begin
    R:=Round(RColor1 + ((RColor2 - RColor1) * Y / (Rect.Bottom - Rect.Top)));
    G:=Round(GColor1 + ((GColor2 - GColor1) * Y / (Rect.Bottom - Rect.Top)));
    B:=Round(BColor1 + ((BColor2 - BColor1) * Y / (Rect.Bottom - Rect.Top)));

    Canvas.Brush.Color:=RGB(R, G, B);
    Canvas.FillRect(Classes.Rect(Rect.Left, Y, Rect.Right, Y+1));
  end;
end;

Nun will ich drauf einen Text schreiben, aber ohne das die schwarzen Buchstaben mit einer hässlichen einheitlichen Farbe hinterlegt sind (Brush.Color eben), sondern, dass diese Farbe durchsichtig ist.
Ich denke, das geht mit igendwelchen Pen.Mode Einstellungen, aber ich weiß nicht, welchen.

Oder muss ich erst Schreiben und dann den Verlauf drüberzeichenen; aber so, dass er schwarz durchscheinen lässt?
Aber wie geht das?
Codito, ergo sum. - I code therefore I am
  Mit Zitat antworten Zitat