PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : KYLIX: Gedrehten Text ausgeben



againsttcpa
25-03-2003, 08:28
Hallo,

wie kann ich unter Kylix (3) gedrehten Text ausgeben?
Unter Delphi konnte man mittels Windows einen Font erstellen und diesen dann dem Canvas zuweisen. Wie geht das mit Kylix?

Gruß Sven

anda_skoa
25-03-2003, 15:32
Ich bin mir nicht sicher, ob das der richtige Ansatz ist.

In Qt kann man einfach den Painter rotieren, also das Objekt, das die Zeichenbefehle zur Verfügung stellt hat auch einen Befehl, der alle nachfolgenden Befehle um einen gewissen Winkel gedreht darstellt.

Die neue Komponenten Bibliothek von Borland, die ja auch in Kylix verwendet wird, benutzt intern Qt, vielleicht wurde so eine Möglichkeit nach außen geführt.

Ciao,
_

againsttcpa
26-03-2003, 06:20
Danke für den Tip, daß paßt genau zu dem, was ich gefunden habe. Hier ist der Link:
http://www.netti.hu/doc/delphi_zine/Kylix%20Tips%20Redux.htm

Meine Frage hierzu: Welche Bibliothek muß ich hierfür einbinden, oder brauche ich dafür nichts zu tun, und kann die Funktionen einfach aufrufen?

Gruß Sven

anda_skoa
26-03-2003, 09:41
Ich denke du kannst die Funktion einfach aufrufen.

Auf der Seite ist ein kleines Beispiel, dass das tut.

Danke für den interessanten Link!

Ist schade, dass Borland in CLX keine vernünftige API zustande gebracht hat :(
Ist warhscheinlich die Limitierung der Windows Implementation. Die hätten dort besser auch Qt verwenden sollen.

Ciao,
_

againsttcpa
26-03-2003, 10:13
Soweit ich herausgefunden habe, kannst Du unter Win/Delphi auch die Qt-Bibliothek verwenden. Diese muß ich im übrigen in der Uses-Anweisung aufführen.

Gruß Sven

anda_skoa
26-03-2003, 10:30
Original geschrieben von againsttcpa
Soweit ich herausgefunden habe, kannst Du unter Win/Delphi auch die Qt-Bibliothek verwenden.


Ah, feine Sache.
Dann kommen auch Entwickler unter Windows mal in den Genuss einer guten API :)



Diese muß ich im übrigen in der Uses-Anweisung aufführen.


Gut zu wissen!

Ich find es toll, dass sich hier auch langsam Wissen zu Kylix bzw Delphi unter Linux, ansammelt.

Wenn du interessante Sachen rausfindest, kannst du sie ruhig hier posten.

Ciao,
_

againsttcpa
01-04-2003, 14:35
Ich habe es jetzt geschafft, daß Beispiel in meinem Programm zu probieren. Allerdings z.Zt. als ein Delphi-Clx-Projekt.Ich mußte feststellen, daß das Beispiel, so wie es geschrieben wurde, bestens funktioniert. Wenn man so wie ich allerdings das ganze auf eine PaintBox anwendet, dann erscheint kein rotierter Text, sondern nur ganz normal herkömmlicher gerader Text. Es scheint, daß die Qt-Funktionen keinen Einfluß auf das Canvas der PaintBox haben, obwohl das Handle ein QPainterH-Object (oder was auch immer) ist.

Der Code des PaintBox-Paint-Ereignisses sieht so aus:
(Stammt direkt aus QExtCtrls.pas)

procedure TPaintBox.Paint;
begin
Canvas.Font := Font;
Canvas.Brush.Color := Color;
if csDesigning in ComponentState then
with Canvas do
begin
Pen.Style := psDash;
Brush.Style := bsClear;
Rectangle(0, 0, Width, Height);
end;
if Assigned(FOnPaint) then FOnPaint(Self);
end;

Hätte jemand eine Idee warum das so merkwürdig ist?

Unter Linux/Kylix werde ich das sobald ich zu Hause bin auch noch mal testen. Ich vermute aber, das ich dasselbe Ergebnis präsentiert bekomme.

Gruß Sven

againsttcpa
01-04-2003, 15:51
Hi,

habs probiert. Gedrehter Text mit Kylix auf einer PaintBox geht auch nicht. Weiß vielleicht jemand warum?

Sven

anda_skoa
01-04-2003, 18:56
Also ich hab keine Ahnung von Delphi, aber vielleicht liegts an der Reihenfolge des Zeichnens.

Wenn du zuerst das gedrehte zeichnest und dann die Klasse die normale, übermalt es vielleicht das von dir gezeichnete.

Ciao,
_

P.S. Code Tags :)

againsttcpa
02-04-2003, 06:27
Hallo,

man zeichnet unter Delphi auf einem Canvas. Die ganzen Zeichenfunktionen werden innerhalb des OnPaint-Ereignisses der Paintbox aufgerufen.
In der Hilfe zur Paintbox habe ich gelesen, daß der Canvas kein eigenes QWidget hat und deshlab das des Parents verwendet.
Wie schon gesagt, direkt auf der Form funktioniert es. Auch mit dem OnPaint-Ereignis.

Gruß Sven

againsttcpa
03-04-2003, 07:16
Hi,

ich habe herausgefunden, daß ich PaintBox1.Canvas.Start im OnPaint-Ereignis aufrufen muß. Nach Beendigung der Zeichenfunktionen muß man nochmal PAintBox1.Canvas.Stop aufrufen.

Jetzt geht es.

Sven