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. |