Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 14.11.2012, 16:16 Titel: Draw String und Bitmap-Fonts |
|
|
Hay, ich fürchte ich verstehe die Sache mit Draw String und den Fonts nicht so richtig. Ich habe hier ein .bmp Bild(1619x19 Pixel groß), welches die Schriftzeichen enthält. Dieses Bild lade ich in mein Programm und gebe einen String via Draw String und diesem Font aus. Allerdings sehe ich da nichts:
Code: | Dim As UByte Ptr myFont
ScreenRes 640,480, 32
myFont = ImageCreate(1619,19)
BLoad "font.bmp", myFont
Draw String (10, 10), "Test",, myFont
ImageDestroy myFont
Sleep |
Vielleicht kann mir da jemand weiterhelfen?  |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 14.11.2012, 21:21 Titel: |
|
|
Danke.
Ich habe jetzt eine eigene Routine geschrieben, welche Bitmap-Fonts nutzt, zwar ziemlich unschön, aber sie funktioniert gut.  |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 14.11.2012, 21:35 Titel: |
|
|
Musste ich neulich auch; http://forum.qbasic.at/viewtopic.php?t=7973
Hab mir dann das hier schnell zusammengebastelt, sollte sich gut erweitern lassen.
Ist nur für gleiche Zeichenbreite (aber wie gesagt sollte sich das ausreichend erweitern lassen)
Beispiel Font (256x256px):
Code: |
Dim Shared FontGRX as any ptr = Imagecreate(256,256) '256x256 (255x16x16)
BLoad "font.bmp",FontGRX
Sub FontDraw(byval fromX as Integer, byval fromY as Integer, byval drawString as String)
Dim cChar as UByte
Dim xChar as Integer
Dim yChar as Integer
For C as Integer = 0 to Len(drawString)-1
cChar = drawString[C]
yChar = Fix(cChar / 16)
xChar = (cChar - (yChar*16))
Put (fromX+(C*16),fromY),FontGRX,(xChar*16,yChar*16)-((xChar*16)+15,(yChar*16)+15),trans
Next C
End Sub
'
Imagedestroy(FontGRX)
|
_________________
 |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 15.11.2012, 00:57 Titel: |
|
|
Code: | ' yChar = Fix(cChar / 16)
yChar = cChar \ 16 |
ist da sicher schneller. Bei xChar vermute ich, das MOD schneller arbeitet, aber das müsste man testen. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 15.11.2012, 17:03 Titel: |
|
|
Hi Eternal_pain,
ist aber nicht das schönste Schriftbild für eine 190kb Datei (unten FontDraw):
Das ist eine 1,4kb BMP:
 _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Zuletzt bearbeitet von volta am 15.11.2012, 17:18, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 15.11.2012, 17:17 Titel: |
|
|
Was spräche eigentlich gegen artgerechtes Rendering mit einer Bibliothek wie freetype? |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 15.11.2012, 21:34 Titel: |
|
|
Naja, war auch nur auf die schnelle als ersatz wegen dem 'draw string' Problem.
@nemored
Stimmt wohl beides, die integer division sollte wohl genauso gehen, weiss nicht wieso ich immer auf FIX bestehe... (war wohl immer der Meinung int würde ab einen gewissen punkt aufrunden, ist laut hilfe aber nicht so)
Und auch MOD 16 sollte das selbe bei ychar tun....
Danke
@volta
Über die grösse hatte ich mir bisher eigentlich keine Geadnken gemacht, ist allerdings schon richtig gross im Vergleich. (hier könnte man evtl noch was erreichen wenn man auf 8bit runter geht?! und natürlich nicht alle 255 Zeichen verwendet)
Das Schriftbild ist aus meinem Hangman-Halloween, da passt es toll rein  _________________
 |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 15.11.2012, 21:39 Titel: |
|
|
Wenn du auf eine Farbe verzichtet, reichen sogar um genau zu sein 4 Bit bei der roten Schriftart... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 15.11.2012, 23:52 Titel: |
|
|
Zitat: | (war wohl immer der Meinung int würde ab einen gewissen punkt aufrunden, ist laut hilfe aber nicht so) |
ist genau umgekehrt; FIX rundet in Richtung 0 (rundet negative Zahlen also auf) _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
|