AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Schrift Umrandung (Outline) auf Image realisieren
Thema durchsuchen
Ansicht
Themen-Optionen

Schrift Umrandung (Outline) auf Image realisieren

Ein Thema von MisterNiceGuy · begonnen am 3. Jun 2007 · letzter Beitrag vom 5. Jun 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#1

Schrift Umrandung (Outline) auf Image realisieren

  Alt 3. Jun 2007, 19:20
Hi ich möchte auf einem Canvas einen Text ausgeben, der allerdings umrandet sein soll.
Kennt hier jemand ein Möglichkeit um das hinzubekommen?
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

Re: Schrift Umrandung (Outline) auf Image realisieren

  Alt 3. Jun 2007, 19:32
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Schrift Umrandung (Outline) auf Image realisieren

  Alt 3. Jun 2007, 19:35
Unter outline verstehe ich was anderes, eher so was: http://www.identifont.com/samples/urw/BetonOutline.gif
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#4

Re: Schrift Umrandung (Outline) auf Image realisieren

  Alt 3. Jun 2007, 19:39
*Ooops* Überschrift nicht gelesen
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Schrift Umrandung (Outline) auf Image realisieren

  Alt 3. Jun 2007, 20:20
Hallo,

meinst du so etwas?

Delphi-Quellcode:
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;
Es funktioniert allerdings nur mit TrueType-Fonts.

Gruß Hawkeye
  Mit Zitat antworten Zitat
OoNapiBLNoO

Registriert seit: 17. Mai 2007
Ort: Berlin
11 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Schrift Umrandung (Outline) auf Image realisieren

  Alt 3. Jun 2007, 20:25
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;
  Mit Zitat antworten Zitat
Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#7

Re: Schrift Umrandung (Outline) auf Image realisieren

  Alt 5. Jun 2007, 10:30
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?
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#8

Re: Schrift Umrandung (Outline) auf Image realisieren

  Alt 5. Jun 2007, 10:31
Hast du den Post von DeddyH gesehen ?
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#9

Re: Schrift Umrandung (Outline) auf Image realisieren

  Alt 5. Jun 2007, 10:41
Ja, da passiert auf meinem Canvas garnichts
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Schrift Umrandung (Outline) auf Image realisieren

  Alt 5. Jun 2007, 10:43
Hallo,

ich habe meinen Code aus Beitrag #5 etwas erweitert:

Delphi-Quellcode:
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;
Gruß Hawkeye
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz