Seite 1 von 1

Include für Bitmapfonts

Verfasst: 02.12.2008 23:47
von gnasen
Hallo,

da ich feststellen musste, dass DrawText() auf verschiedenen Systemen die verschiedensten Ergebnisse bis hin zu bösen Fehlern liefert (abhängig von Kantenglättung, Design, Win-Version etc), habe ich mich entschlossen Bitmapfonts zu nutzen.

Die Include ist aufs Minimum beschränkt und bietet folgenden Funktionen:
Bitmapfonts erstellen/laden
Texte ausgeben
Breite und Höhe ermitteln

Alle Schriften, welche mit LoadFont geladen werden, können übergeben werden.

Bild

http://www.file-upload.net/download-129 ... e.rar.html

Ist die Download-Datei nicht mehr vorhanden?

Viel Spass


PS: PB liefert für #PB_Bold_Italic falsche Werte über TextWidth() und TextHeight(). Deshalb sind diese nicht richtig dargestellt. Bug Forum?

Verfasst: 02.12.2008 23:51
von gnasen
Das Beispiel aus dem Download zum vorinspizieren. Leicht modifiziertes Beispiel aus der Hilfe, daher gewohnt CPU bombend.

Code: Alles auswählen

IncludeFile "bmFonts_include.pb"

InitSprite()

;/ init windowed screen (sprite use)
Define _Window.l = OpenWindow(#PB_Any, 0,0,400,400,"")
OpenWindowedScreen(WindowID(_Window),0,0,800,600,0,0,0)
TransparentSpriteColor(#PB_Default, #transparent_color)

;/ create a bitmap font
Define testfont1.l = LoadFont(#PB_Any, "Tahoma", 12, #PB_Font_Bold)
Define testfont2.l = LoadFont(#PB_Any, "Tahoma", 24)
_bmf_create(testfont1, $FFCCBB,"output1.bmf")
_bmf_create(testfont2, $BBFFBB,"output2.bmf")

;/ load a bitmap font
Define loadfont1.l = _bmf_load("output1.bmf")
Define loadfont2.l = _bmf_load("output2.bmf")

;debug width/heigt of a text
Debug _bmf_text_width(loadfont1, "blablubb")
Debug _bmf_text_height(loadfont1, "blabla!"+Chr(13)+"blublub?")

Define Event

Repeat

  Repeat
    Event = WindowEvent()
    If Event = #PB_Event_CloseWindow : End : EndIf
  Until Event = 0
  
  FlipBuffers() 
  ClearScreen(RGB(0, 0, 0))
  ;draw texts
  _bmf_draw_text(loadfont1,"blabla!"+Chr(13)+"blublub?",100,100)
  _bmf_draw_text(loadfont2,"blabla!"+Chr(13)+"blublub?",200,200)
  Delay(1)
  
ForEver