Seite 1 von 1

LoadFont

Verfasst: 26.04.2011 14:30
von delikanli_19_82
habe noch eine frage über LoadFont.

der LoadFont scheint die Schrift und Grad nicht beim Laden des Programms immer korrekt zu laden. Es gibt zwar keine Fehlermeldung. die Anwendung wird gestartet und der Font wird geladen aber wenn ich mittels DrawText nun zeichne, erscheint nicht die gewünschte Schriftart in der korrekten Größe. Statt dessen kommt ganz normal diese standardmäßige Fontdarstellung in der eben standardmäßigen größe.

Das kann ruhig jeder selbst ausprobieren. ein beispielcode ist nicht wirklich von nöten. einfach mittels LoadFont die schrift laden und vor DrawText unter "If CreateImage..." mittels isfont() die Fontverfügbarkeit checken und wenn verfügbar einfach mittels DrawingFont() anwenden. Mal klappts wie es soll. Mal scheint alles ok, aber die Font und Grad passen sich nicht an.

woran kann es liegen? gibt es eine möglichkeit, dies zu erzwingen?

mfg

kurt

Re: LoadFont

Verfasst: 26.04.2011 14:35
von RSBasic
Ich hab mal nen Beispielcode geschrieben und habe mehrfach hintereinander ausgeführt.
Bei mir entstehen keine Fehler beim Laden oder Zeichnen:

Code: Alles auswählen

EnableExplicit

Define EventID

LoadFont(1,"Courier",20,#PB_Font_Underline)
CreateImage(1,480,50)

If StartDrawing(ImageOutput(1))
  DrawingFont(FontID(1))
  
  DrawText(10,10,"PureBasic ForEver",RGB(0,0,255))
  
  StopDrawing()
EndIf

If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ImageGadget(1,10,10,0,0,ImageID(1),0)
  
  Repeat
    EventID=WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf

Re: LoadFont

Verfasst: 26.04.2011 14:48
von delikanli_19_82
in meinem beispiel wird der image beim mousedown und mouseup sowie bei einem mouseover und mouseout ereignis jeweils neugezeichnet und in den imagegadget mittels setgadgetstate geladen.

beim neuzeichnen wird jedesmal die DrawingFont() neu aufgerufen. kann dieses immer wiederkehrende aufrufen dieser prozedur den effekt auslösen?

ich verzweifle...

mfg.

kurt

Re: LoadFont

Verfasst: 26.04.2011 15:34
von Bisonte
delikanli_19_82 hat geschrieben:ich verzweifle...
dann wäre es vielleicht jetzt an der Zeit, den Code zu posten, der Dich verzweifeln lässt,
damit wir nicht im Dunkeln tappen.

Re: LoadFont

Verfasst: 26.04.2011 16:25
von delikanli_19_82
der code ist zu umfangreich.

muss erstmal selbst nach einer lösung suchen wie es aussieht. wenns gar nicht geht, naja mal schauen....

trotzdem danke an alle

Re: LoadFont

Verfasst: 26.04.2011 16:29
von RSBasic
Dann versuch, dein umfangreicher Code zu einem kleinen Beispielcode umzuschreiben. Das hilft ganz bestimmt. Wenn du Glück hast, findest du selber den Fehler. Ansonsten kannst du dein Beispielcode hier posten, so dass wir das Problem nachvollziehen können. :wink:

Re: LoadFont

Verfasst: 28.02.2013 14:30
von Gimbly
Bin heute auf diesen alten Thread gestoßen, weil ich genau das hier geschilderte Phänomen habe.

Wenn ich LoadFont() ganz zu Anfang im Code stehen habe, wird der Font nicht immer geladen und man erhält mit DrawText() dann die Standard-Schrift. Weiter hinten im Code platziert, arbeitet LoadFont() dann korrekt.

Verwende allerdings noch PB 4.51 (x64).

Re: LoadFont

Verfasst: 28.02.2013 14:44
von Kiffi
@Gimbly: LoadFont liefert einen Rückgabewert ("Returns nonzero if the
font was loaded successfully and zero if not.")

Hast Du den schon mal ausgewertet?

Ansonsten kannst Du ja mal testen, ob sich diesbezüglich in der
aktuellen PB-Version (kannst Du parallel zur Deiner jetzigen Version
installieren) was geändert hat.

Grüße ... Kiffi

Re: LoadFont

Verfasst: 28.02.2013 14:48
von Gimbly
Hallo Kiffi,

naja, das Problem kann man ja einfach umgehen, indem man LoadFont() etwas später im Code plaziert.

Ist nur gut zu wissen.