![]() |
Schrift Umrandung (Outline) auf Image realisieren
Hi ich möchte auf einem Canvas einen Text ausgeben, der allerdings umrandet sein soll.
Kennt hier jemand ein Möglichkeit um das hinzubekommen? |
Re: Schrift Umrandung (Outline) auf Image realisieren
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const Offset = 2; //2Pixel Abstand zum Text var R: TRect; begin R := Rect(10,10,50,50); Windows.DrawText(Canvas.Handle,'Hallo Welt',-1,R,DT_CALCRECT or DT_SINGLELINE); Windows.Rectangle(Canvas.Handle,R.Left - Offset,R.Top - Offset,R.Right + Offset,R.Bottom + Offset); SetBkMode(Canvas.Handle,TRANSPARENT); Windows.DrawText(Canvas.Handle,'Hallo Welt',-1,R,DT_VCENTER or DT_CENTER or DT_SINGLELINE); end; |
Re: Schrift Umrandung (Outline) auf Image realisieren
Unter outline verstehe ich was anderes, eher so was:
![]() |
Re: Schrift Umrandung (Outline) auf Image realisieren
*Ooops* Überschrift nicht gelesen :oops:
|
Re: Schrift Umrandung (Outline) auf Image realisieren
Hallo,
meinst du so etwas?
Delphi-Quellcode:
Es funktioniert allerdings nur mit TrueType-Fonts.
procedure DrawOutlinedText (aCanvas: TCanvas;
aPosX, aPosY: Integer; aText: string; aColor: TColor = clBlack); var DC : HDC; OldMode : Integer; begin aCanvas.Pen.Color := aColor; DC := aCanvas.Handle; OldMode := SetBkMode(DC, TRANSPARENT); BeginPath(DC); aCanvas.TextOut (aPosX, aPosY, aText); EndPath(DC); StrokePath(DC); SetBkMode(DC, OldMode); end; procedure TForm1.Button1Click (Sender: TObject); begin Canvas.Font.Name := 'Arial'; Canvas.Font.Size := 48; DrawOutlinedText (Canvas, 8, 8, 'Hallo Welt!', clBlue); end; Gruß Hawkeye |
Re: Schrift Umrandung (Outline) auf Image realisieren
ist denn sowas mit gemeint, also so hab ich das in der Schule gelernt *g
Delphi-Quellcode:
var x,y,Breite,Hoehe : Integer;
s : String; begin x:=30; y:=20; s:='Computer'; with Image1.Canvas do begin Font.Name:='Arial'; Font.Size:=24; Breite:=TextWidth(s); Hoehe:=TextHeight(s); Rectangle(x-10,y-10,x+Breite+10,y+Hoehe+10); TextOut(x,y,s); end; end; |
Re: Schrift Umrandung (Outline) auf Image realisieren
Vielleicht war nicht ganz klar, was ich gemeint habe. Ich will jedem Buchstaben eine Umrandung verpassen.
So wie auf Luckies Bild. Kann man nicht einfach die Stiftbreite erhöhen mit der man die Buchstaben schreibt und dann mit einem dünneren Stift nochmal drüber schreiben? |
Re: Schrift Umrandung (Outline) auf Image realisieren
Hast du den Post von DeddyH gesehen ?
|
Re: Schrift Umrandung (Outline) auf Image realisieren
Ja, da passiert auf meinem Canvas garnichts ;)
|
Re: Schrift Umrandung (Outline) auf Image realisieren
Hallo,
ich habe meinen Code aus Beitrag #5 etwas erweitert:
Delphi-Quellcode:
Gruß Hawkeye
procedure DrawOutlinedText (aCanvas: TCanvas;
aPosX, aPosY: Integer; aText: string; aFillColor: TColor; aBorderColor: TColor; aBorderWidth: Integer = 1); var DC : HDC; OldMode : Integer; begin aCanvas.Brush.Color := aFillColor; aCanvas.Pen.Color := aBorderColor; aCanvas.Pen.Width := aBorderWidth; DC := aCanvas.Handle; OldMode := SetBkMode(DC, TRANSPARENT); BeginPath(DC); aCanvas.TextOut (aPosX, aPosY, aText); EndPath(DC); FillPath(DC); BeginPath(DC); aCanvas.TextOut (aPosX, aPosY, aText); EndPath(DC); StrokePath(DC); SetBkMode(DC, OldMode); end; procedure TForm1.Button11Click (Sender: TObject); begin Canvas.Font.Name := 'Arial'; Canvas.Font.Size := 96; DrawOutlinedText (Canvas, 8, 8, 'Hallo Welt!', clYellow, clBlue, 2); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:30 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