Include für Bitmapfonts

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
gnasen
Beiträge: 578
Registriert: 01.08.2007 14:28
Computerausstattung: PB 4.60

Include für Bitmapfonts

Beitrag 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?
pb 4.51
Benutzeravatar
gnasen
Beiträge: 578
Registriert: 01.08.2007 14:28
Computerausstattung: PB 4.60

Beitrag 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
pb 4.51
Antworten