Autor Beitrag
delphistart
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 119



BeitragVerfasst: Mo 15.10.07 12:24 
Hallo,

Wie kann ich einen text in einem Canvas drehen?
Ich würde den Text gerne von oben nach unten oder Umgekehrt schreiben. Geht das? Wie?

Und noch eine Frage: Wie kann ich vor der Ausgabe mit Canvas.TextOut die Schrieftgröße ändern?

Danke vorab für die Hilfe!!!


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mo 15.10.2007 um 12:29
Allesquarks
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 510

Win XP Prof
Delphi 7 E
BeitragVerfasst: Mo 15.10.07 12:30 
hm für die Schriftgröße gibts wahrscheinlich unter font was passendes u nd für Schrift untereinander versuch doch mal da einfach zeilenumbrüche einzufügen geht entweder über #10#13 oder andersherum #13#10. Was benutzt du denn textout?
Saubäär
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 376



BeitragVerfasst: Mo 15.10.07 12:46 
Hallo delphistart,

Den Text im Canvas könntest du mit Schleifen und Canvas.Pixels drehen. Hiermal ein kleines Beispiel:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var x, y: Cardinal;
begin
 Image1.Canvas.TextOut(5050'Text');

 for x := 0 to 105 do begin
  for y := 0 to 105 do begin
   Image2.Canvas.Pixels[y,x] := Image1.Canvas.Pixels[x,y];
   end;
   end;
end;


Gruß
delphistart Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 119



BeitragVerfasst: Mo 15.10.07 12:47 
Ich benutze im Moment TextOut, kann das aber auch ohne größere Probleme noch ändern, wenn es was besseres Gibt. Das mit den Zeilenumbrüchen funktioniert nicht, weil ich dann ja nicht dir Buchstaben selber gedreht, sondern sie nur untereinander geschrieben habe...
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Mo 15.10.07 12:52 
@saubäär: Bitte nicht mit canvas.pixels arbeiten! Außer dir wirst von einem, zwei oder drei großen CPU Herstellern gesponsort. ;) Langsamer geht nichts mehr. Abgesehen davon kannst du so nur in 90° Schritten drehen.

Die echt Rotation kannst du so direkt nicht einstellen. Aber schau dir mal dieses Thema an. Damit wird einfach das Font anders erstellt.

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
Saubäär
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 376



BeitragVerfasst: Mo 15.10.07 12:58 
@Lossy: Ich denke für kleinere Canvas' ist es kein großes Problem mit dem "langsamen" Pixels zu arbeiten. (Wenns nicht schnell genug ist, würde sich ja auch Scanline anbieten).
In der Überschrift stand, dass er es um 90° drehen möchte, warum dann also nicht mit Pixels o.ä.?
Ich wollte lediglich ne einfache/schnelle Methode zur Lösung des Problems anbieten.

Gruß
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Mo 15.10.07 13:11 
Hallo,

ich weiss nicht in wie weit Delphi schon GDI+ übersetzt hat, denn dort gibt es sehr einfache Möglichkeiten Objekte zu drehen (siehe Suche im MSDN ROTATE und Suche im MSDN ROTATEAT).
Ansonsten kenne ich keine API-Funktion, mit der man direkt das Drehen bewerkstelligen könnte.

Deshalb schau doch einfach mal bei den Schweizern vorbei, die haben sich schon um was ähnliches gekümmert!

Gruß Hape!