AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Text vertikal auf Canvas ausgeben

Ein Thema von messie · begonnen am 31. Mai 2007 · letzter Beitrag vom 31. Mai 2007
Antwort Antwort
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#1

Text vertikal auf Canvas ausgeben

  Alt 31. Mai 2007, 09:50
Hallo,

bestimmt gibt es dieses Thema hier schon, mit fehlt aber das passende Stichwort, jedenfalls habe ich nix gefunden.
Wie bekomme ich einen Text 90° hochkant auf einem Canvas ausgegeben?

Danke, Messie
  Mit Zitat antworten Zitat
SirTwist

Registriert seit: 28. Sep 2006
196 Beiträge
 
Delphi XE Professional
 
#2

Re: Text vertikal auf Canvas ausgeben

  Alt 31. Mai 2007, 09:57
Such mal bei Torry nach Rotate Text. Im Prinzip musst Du Dir mit der Windows-API einen neuen Font anlegen und damit dann zeichnen.
  Mit Zitat antworten Zitat
uwewo

Registriert seit: 14. Jul 2004
Ort: Karlsruhe
479 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Text vertikal auf Canvas ausgeben

  Alt 31. Mai 2007, 10:18
Hi Messie,

hatte das auch mal gebraucht und kurz in einem alten Source nachgesehen.

Hier ein Auschnitt

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Var
   LF : TLogFont;
   TF : TFont;
begin
    Form1.Canvas.Font.Color := clBlack;
    Form1.Canvas.Font.Name :='Arial';
    TF := TFont.Create;
    TF.Assign(Form1.Canvas.Font);
    GetObject(tf.Handle, sizeof(LF), @LF);
    LF.lfEscapement := 900;
    LF.lfOrientation := 900;
    TF.Handle := CreateFontIndirect(LF);
    Form1.Canvas.Font.Assign(TF);
    TF := TFont.Create;
    Form1.Canvas.TextOut(100,100,'Hallo');
    tf.free;
end;
Habe es nur auf die schnelle den Canvas auf Form1 geändert und das wichtigste rauskopiert.

Nicht getestet sollte aber funktionieren.
Uwe
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Text vertikal auf Canvas ausgeben

  Alt 31. Mai 2007, 11:02
Danke, das ist super, die LogFont-Struktur kann man sicher häufiger mal gebrauchen.
lfOrientation scheint nicht zu funktionieren, so wie ich es im SDK verstanden habe, sollten sich damit die Zeichen noch einzeln gegen ihre Basis drehen lassen.

Grüße, Messie
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Text vertikal auf Canvas ausgeben

  Alt 31. Mai 2007, 14:10
also bei mir funzt das 100%:

Zitat:
lfEscapement: Specifies the angle, in tenths of degrees, between the escapement vector and the x-axis of the device. The escapement vector is parallel to the base line of a row of text.

lfOrientation: Specifies the angle, in tenths of degrees, between each character's base line and the x-axis of the device.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Text vertikal auf Canvas ausgeben

  Alt 31. Mai 2007, 14:22
man sollte dabei beachten das diese Variante nur mit TrueType-Fonts ordentlich funktioniert. Andere lassen sich teilweise nicht frei drehen.
Für den fall wäre eine alternative den Text normal auf ein Zeischenbild zu schreiben und dieses dann zu drehen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Text vertikal auf Canvas ausgeben

  Alt 31. Mai 2007, 14:22
Zitat von computer-glossar.de:
also bei mir funzt das 100%:
Vielleicht hast Du mal ein grafisches Beispiel, wie es funzt. Vielleicht habe ich es auch anders verstanden als es ist.

Grüße, Messie

EDIT: Hmpf, wieder keine Mitteilung, daß neue Posts vorhanden sind.
Übrigens benutze ich das Beispiel oben mit Arial...
  Mit Zitat antworten Zitat
uwewo

Registriert seit: 14. Jul 2004
Ort: Karlsruhe
479 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Text vertikal auf Canvas ausgeben

  Alt 31. Mai 2007, 14:36
Habe mein Beispiel nun selbst getestet 1:1 in ein neues Projekt kopiert.

Funktioniert wie gewünscht Bilder im Anhang.
Miniaturansicht angehängter Grafiken
lf_900_708.jpg   lf_450_189.jpg  
Uwe
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#9

Re: Text vertikal auf Canvas ausgeben

  Alt 31. Mai 2007, 14:48
Ja, so hatte ich das auch. Da kannst Du aber lfOrientation rauslöschen oder auf beliebige Werte setzen, das sieht immer so aus. Ich hatte aus der SDK-Hilfe verstanden, daß ich die Buchstaben mit lfOrientation selbst nochmal rotieren kann.

Aber für das was ich brauchte ist Dein Beispiel super. Der Rest ist Spielerei.

Grüße, Messie
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:15 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