![]() |
DEUTSCHE VERSION |
|
![]() |
Links | | | Forums | | | Comments | | | Report news |
![]() |
Chat | | | Polls | | | Newsticker | | | Archive |
![]() |
amiga-news.de Forum > Programmierung > Fontsensitiv Zentrieren | [ - Search - New posts - Register - Login - ] |
-1- | [ - Post reply - ] |
2007-09-09, 14:41 h MaikG Posts: 5172 User |
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. [ - Answer - Quote - Direct link - ] |
2007-09-09, 14:59 h thomas Posts: 7721 User |
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/ [ - Answer - Quote - Direct link - ] |
2007-09-09, 16:56 h MaikG Posts: 5172 User |
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. [ - Answer - Quote - Direct link - ] |
2007-09-09, 19:20 h thomas Posts: 7721 User |
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. ] [ - Answer - Quote - Direct link - ] |
2007-09-09, 22:16 h MaikG Posts: 5172 User |
>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? [ - Answer - Quote - Direct link - ] |
2007-09-10, 09:10 h thomas Posts: 7721 User |
@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/ [ - Answer - Quote - Direct link - ] |
2007-09-10, 10:06 h MaikG Posts: 5172 User |
Naja ich hab schon immer den selben text genommen(ohne p+q). Aber je nach Font ist einer genau richtig, ein anderer weicht ab. [ - Answer - Quote - Direct link - ] |
-1- | [ - Post reply - ] |
amiga-news.de Forum > Programmierung > Fontsensitiv Zentrieren | [ - Search - New posts - Register - Login - ] |
![]() |
Masthead |
Privacy policy |
Netiquette |
Advertising |
Contact
Copyright © 1998-2025 by amiga-news.de - all rights reserved. |
![]() |