Einzelnen Beitrag anzeigen

Benutzerbild von cruiser
cruiser

Registriert seit: 23. Dez 2003
Ort: Königsbrück/Sachsen
455 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Schrift Fonts mehr-Farbig? -Auch einzelne Buschstaben

  Alt 4. Dez 2006, 20:30
Dann versuch mal über eine Maske (gebastelt mit TextOut), eine Farbsource(die so gross ist, wie die Maske) und anschliessend das ganze via MaskBlt auf das Zielcanvas zu übertragen. Evtl. musst du noch den Platzbedarf berechnen um Maske und Farbsource zu kalkulieren.

PS: Wenn du dann viel Langeweile hast, kannst du's ja in eine eigene Label-Komponente kapseln

EDIT: mal ganz grob:

Delphi-Quellcode:
procedure cnvDrawColoredText(Text: string; Canvas: TCanvas; X,Y: Integer);
var
  Mask, cSrc: TBitmap;
  Size: TSize;
  i: Integer;
begin
  // Groesse berechnen
  Size := Canvas.TextExtent(Text);
  
  // Buffer vorbereiten
  Mask := TBitmap.Create; Mask.Width := Size.cx; Mask.Height := Size.cy;
  cSrc := TBitMap.Create; cSrc.Width := Size.cx; cSrc.Height := Size.cy;

{  :
  :
  // cSrc wie gewünscht colorieren
  :
   :                                   }


  // Maske schwarz faerben
  Mask.Canvas.Pen.Color := clBlack;
  Mask.Canvas.Brush.Color := clBlack;
  Mask.Canvas.Rectangle(0,0,Size.cx,Size.cy);

  // Text in Weiss schreiben
  Mask.Canvas.Font.Color := clWhite;
  Mask.Canvas.TextOut(0,0,Text);

  // Maske Schwarz/Weiss machen
  Mask.Monochrome := True;
  Mask.PixelFormat := pf1bit;

  // Kopieren
  // Wichtig! MUSS 2 mal durchlaufen
  for i:= 0 to 1 do MaskBlt(
    Canvas.Handle, X, Y,
    Size.cx, Size.cy,
    cSrc.Canvas.Handle, 0, 0,
    Mask.Handle, 0, 0,
    MakeROP4(SRCCOPY,DSTINVERT)
  );

  Mask.Free;
  cSrc.Free;
end;
Hab nochmal drübergeschaut... Müsste jetzt funzen
  Mit Zitat antworten Zitat