amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > Fontsensitiv Zentrieren [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

09.09.2007, 14:41 Uhr

MaikG
Posts: 5172
Nutzer
Wie kann man wenn man nicht weiss welcher Font kommt diesen
Zentrieren?

Ich bekomme das zwar immer mit einigen Fonts+Größen hin,
andere weichen dann wieder ab.

Hauptproblem ist die Vertikale Zentrierung.

Z.b. bei einem Rahmen(Varialbe größe) den man gezeichnet hat und
will darin mit Text etwas reinschreiben.
Ich habe die mitte des Rahmens und Font YSize. Nun rechne ich zur
mitte des Rahmens die halbe YSize dazu. Bei times 15 sieht
das z.b. ganz gut aus bei einer anderen schrift nicht mehr.

[ - Antworten - Zitieren - Direktlink - ]

09.09.2007, 14:59 Uhr

thomas
Posts: 7716
Nutzer

TextLength() gibt dir die Breite eines Textes zurück.
TextExtent() gibt dir die Ausdehnung (Breite und Höhe) eines Textes.


Zum Beispiel:

Move(rp,area_x + (area_w - TextLength(rp,text,textlen)) / 2,area_y + (area_h - rp->TxHeight) / 2 + rp->TxBaseline);
Text(rp,text,textlen);

area_x, area_y : Position des Bereichs, auf dem zentriert werden soll
area_w, area_h : Breite und Höhe des Bereichs
rp : RastPort in den gezeichnet wird
text : Text, der zentriert werden soll
textlen : Länge des Texts, z.B. strlen(text)

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomasrapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

09.09.2007, 16:56 Uhr

MaikG
Posts: 5172
Nutzer
Also bei times(15) ist es damit zu weit am oberen rand.

Mache ich:

Move(rp,area_x + (area_w - TextLength(rp,text,textlen)) / 2,area_y + 1 + (area_h - rp->TxHeight) / 2 + rp->TxBaseline);

ist es für times okay, für courier(15) aber wieder zu weit
am unteren rand. Also y Technisch so wie vorher. X sieht gut aus.

[ - Antworten - Zitieren - Direktlink - ]

09.09.2007, 19:20 Uhr

thomas
Posts: 7716
Nutzer
So ist das halt. Nimm einen Text mit p oder g drin, dann sieht's ok aus.

Oder mach einfach den Rahmen größer, fällt es nicht so auf.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomasrapp.homepage.t-online.de/

[ Dieser Beitrag wurde von thomas am 09.09.2007 um 19:20 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

09.09.2007, 22:16 Uhr

MaikG
Posts: 5172
Nutzer
>So ist das halt. Nimm einen Text mit p oder g drin, dann sieht's ok
>aus.

Mit anderen worten es ist keine Rechnerische frage sondern
fonts weichen innerhalb ihres Rahmens in der Position ab?



[ - Antworten - Zitieren - Direktlink - ]

10.09.2007, 09:10 Uhr

thomas
Posts: 7716
Nutzer
@MaikG:

Nein, die Fonts weichen nicht ab. Die Fonts haben eine Basislinie, das ist die Unterkante von "normalen" Zeichem, wie a, b, n, m, o usw.
Und dann gibt es Zeichen, die gehen auch unter die Basislinie (p, q, g etc.).

Du kannst den Text jetzt entweder so ausrichten, daß er mit allen Zeichen in den Rahmen paßt, also so, wie ich das oben beschrieben habe. Dann sieht das mit a, b usw. etwas zu hoch aus, aber p, q etc. passen auch rein. Oder du richtest den Text an der Basislinie aus (rp->TxBaseline+1 statt rp->TxHeight), dann sind p, q usw. zu tief, aber der Rest sieht ok aus.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomasrapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

10.09.2007, 10:06 Uhr

MaikG
Posts: 5172
Nutzer
Naja ich hab schon immer den selben text genommen(ohne p+q).
Aber je nach Font ist einer genau richtig, ein anderer weicht ab.

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > Fontsensitiv Zentrieren [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.