TGlyph Offset
Übersicht

![]() |
FirstdeathmakerBetreff: TGlyph Offset |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie bekomme ich das Offset der in TImageFont gespeicherten Glyphen? Wenn ich auf die Images direkt zugreife, werden diese chaotisch dargestellt:
Also wie müsste das Offsethandling einer eigenen DrawText Funktion aussehen welche direkt mit den Glyphenimages arbeitet? Ich werde aus dem BMax code von Mark leider nicht wirklich schlau, weil diese für das eigentliche zeichnen in frame.Draw wechselt wo man nicht mehr weiter kommt: (Was ich gerne wüsste ist, wofür ix,iy,jx und jy stehen. Das komische ist ja auch, dass für die x position auch ein y Anteil benutzt wird: Code: [AUSKLAPPEN] Local tx#=glyph._x*ix+glyph._y*iy
Code: [AUSKLAPPEN] Method Draw( text$,x#,y#,ix#,iy#,jx#,jy# )
For Local i=0 Until text.length Local n=CharToGlyph( text[i] ) If n<0 Continue Local glyph:TImageGlyph=LoadGlyph(n) Local image:TImage=glyph._image If image Local frame:TImageFrame=image.Frame(0) If frame Local tx#=glyph._x*ix+glyph._y*iy Local ty#=glyph._x*jx+glyph._y*jy frame.Draw 0,0,image.width,image.height,x+tx,y+ty EndIf EndIf x:+glyph._advance*ix y:+glyph._advance*jx Next End Method |
||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn ich mich richtig entsinne, dann werden die Abstände zwischen den einzelnen Glyphs direkt rechts an die Pixmap angehängt. Für diese Aussage übernehme ich aber keine Gewähr. Die Methode Draw() hat damit gar nichts zu tun. ix#,iy#,jx#jy# sind irgendwelche Faktoren, die Mark da bei SetScale, SetRotation verwendet. Schau mal in die Funktion DrawText, da werden die gefüllt.
Um das zu erreichen, was du willst, musst du dir einen neuen FontLoader, Eine neue TGlyph-Klasse stricken. Wie das geht kannst du dir ja in meinem BMPFont Modul ansehen, dass macht da nichts anderes. Da hab ich ebenfalls einen neuen Loader geschrieben, der die BMPFonts in eine eigen TGlyph-Klasse pfuscht. Das eigentliche Verwalten und Zeichnen übernimmt dann wieder TImageFont! cheers |
||
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es gibt verschiedene Arten von Offsets. Der Advance-Offset gibt an, wie weit der "Cursor" nach dem Zeichnen des Buchstabens nach rechts bewegt werden muss. Der Bearing-Offset ( x und y ) gibt die Verschiebung eines einzelnen Glyphs von der Grundlinie an.
Vielleicht hilft dir auch diese Abbildung weiter: ![]() Oder die FreeType Docs -> http://www.freetype.org/freety...step2.html |
||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich meinte nicht die Abstände zwischen den einzelnen Gryph´s, sondern das Offset der einzelnen Images.
Wie ich jetzt herausgefunden habe, ist dieses unter g:TImageGlyph g._x und g._y zu finden. Der Abstand ist unter g._advance zu finden. Aber danke für deinen Rat (und vor allem für BMPFont, ich benutz es in jedem meiner Projekte!) |
||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group