![]() |
Rand für Canvas TextOut Schrift
Ich möchte meinem Text, den ich über Canvas.TextOut ausgebe, einen Rand um die Buchstaben spendieren, zwecks besserer Lesbarkeit. Was ich bisher mache ist eine neunfache Ausgabe das Textes, zuerst um einen Pixel zu allen Seiten versetzt in Farbe X, und zuletzt noch einmal in die Mitte mit Farbe Y. Klappt eigentlich relativ gut, zumindest optisch kann man nichts dagegen sagen. Nur gefällt mir das so allgemein nicht. Neun mal einen Text ausgeben ist Quatsch. Gibt es was besseres?
|
AW: Rand für Canvas TextOut Schrift
Wie wäre es mit dem "richtigen" Font? (ich glaube shaded ist das Stichwort)
oder habe ich da etwas falsch verstanden? Deine Methode der Ausgabe finde ich etwas seltsam, da doch im allgemeinen immer ein Buchstabe mit Hintergrund gezeichnet wird? Gruß K-H |
AW: Rand für Canvas TextOut Schrift
Wenn man Brush auf bsClear stellt, dann nicht.
|
AW: Rand für Canvas TextOut Schrift
Such mal nach den Begriffen "Draw Text Outline". Dazu gibt es etliche Lösungen.
![]() |
AW: Rand für Canvas TextOut Schrift
Liste der Anhänge anzeigen (Anzahl: 1)
Das Beispiel ist schon mal interessant, zeichnet aber soweit ich es erkennen kann nur den Rand.
Das (Anlage) ist das Ergebnis meines Codes. Hier mal der Code, nur finde ich den etwas übertrieben.
Delphi-Quellcode:
Aber ich gucke mir an was es unter den Begriffen gibt.
procedure TextOutFontBorder(Canvas: TCanvas; x, y: Integer; Text: String;
ColorFont, ColorFontBorder: TColor; FontBorder: Boolean); var bx, by: Integer; begin if FontBorder then begin Canvas.Font.Color := ColorFontBorder; for bx := 0 to 2 do //Font-Rand zeichnen for by := 0 to 2 do Canvas.TextOut(x + (1 - bx), y + (1 - by), Text); end; Canvas.Font.Color := ColorFont; Canvas.TextOut(x, y, Text); end; |
AW: Rand für Canvas TextOut Schrift
Du mußt vorher dem Pinsel noch eine Farbe zuweisen - dann wird der Pfad auch gefüllt. Allerdings sieht das Ergebnis durch die fehlende Kantenglättung etwas ... unschön aus.
Nutzt Du Graphics32? Dafür gibt es eine schöne ![]() |
AW: Rand für Canvas TextOut Schrift
Liste der Anhänge anzeigen (Anzahl: 2)
ich wiederhole mich, sorry, mit GDI+ und Path recht einfach, im Beispiel der Text "Test"
Delphi-Quellcode:
Graphics := TGPGraphics.Create(BackImage.Canvas.Handle);
graphics.SetSmoothingMode(SmoothingModeHighQuality); graphics.SetTextRenderingHint(TextRenderingHintAntiAlias); Brush:=TGPSolidBrush.Create(ColorToTGPColor(clRed,200)); FontFamily := TGPFontFamily.Create('Arial narrow'); aFont := TGPFont.Create(FontFamily,80); Pen:=TGPPen.Create(ColorToTGPColor(clRed,200)); fmt:=TGPStringFormat.Create; try path := TGPGraphicsPath.Create; path.AddString('Test',-1,FontFamily,1,150,MakePoint(100,100),fmt); Graphics.DrawPath(pen,path); // Graphics.FillPath(brush,path); path.Free; pen.Free; Graphics.DrawString(FormatDateTime('hh:nn:ss',now),-1,aFont,MakePoint(0.0,0),Brush); |
AW: Rand für Canvas TextOut Schrift
Danke, gucke ich mir an, aber wieso sorry, hast du es mir gegenüber schon mal erwähnt?
|
AW: Rand für Canvas TextOut Schrift
Nein, aber ich preise die Vorzüge ständig an wenn es um Grafikausgaben geht ...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz