Seite 1 von 1

[erledigt] TextHeight versagt bei Dynamischer Font-Nummer?!

Verfasst: 03.10.2014 10:16
von NicknameFJ
Hallo zuzusammen,

ich möchte den Standard-Gadget-Font ändern und hierbei die maximale Schriftgröße ermitteln die noch als Buttonbeschriftung lesbar ist. Soweit kein Problem (Source #1). Hier wurde eine statische Font-Nummer verwendet.

Jetzt habe ich das auf dynamische Font-Nummern geändert (#PB_Any) und jetzt schlägt TextHeight fehlt - gibt bei jeder Schriftgröße immer 16 zurück. (Source #2).

Könnte da bitte mal jemand mit drüber schauen, bin gerade am Verzweifeln.

Ist das ein BUG? oder bin ich nur zu bl*de?

PB 5.31 beta 1 (x86) auf Win7 Prof. 64 Bit. Kann leider gerade nicht auf anderen PB-Versionen testen.

Danke.

NicknameFJ



Source #1

Code: Alles auswählen

EnableExplicit

Define Win, Schrift, Hoehe

Win = OpenWindow(#PB_Any,0,0,100,100,"",#PB_Window_Invisible)

If Win
  
  Schrift = 30
  
  Repeat
    
    
    
    
    LoadFont(99,"MS Sans Serif",Schrift)  
    
    StartDrawing(WindowOutput(Win))
    
    DrawingFont(FontID(99))
    
    Hoehe =  TextHeight("Beschriftung")
    StopDrawing()
    Schrift -1
  Until Hoehe <= 14 Or Schrift < 1
  
  CloseWindow(Win)
  
  SetGadgetFont(#PB_Default,FontID(99))
  
EndIf

If Schrift
  Debug "eingestellt auf MS Sans Serif: "+ Schrift
  Debug "Fonthöhe:  " + Hoehe
EndIf


Source #2

Code: Alles auswählen

EnableExplicit

Define Win, Schrift, Hoehe, GadgetFont

Win = OpenWindow(#PB_Any,0,0,100,100,"",#PB_Window_Invisible)

If Win
  
  Schrift = 30
  
  Repeat
   If GadgetFont
       FreeFont(GadgetFont)
   EndIf
    
    GadgetFont = LoadFont(#PB_Any,"MS Sans Serif",Schrift)  
    
    StartDrawing(WindowOutput(Win))
    
    DrawingFont(GadgetFont)
    
    Hoehe =  TextHeight("Beschriftung")
    StopDrawing()
    Schrift -1
  Until Hoehe <= 14 Or Schrift < 1
  
  CloseWindow(Win)
  
  SetGadgetFont(#PB_Default,GadgetFont)
  
EndIf

If Schrift
  Debug "eingestellt auf MS Sans Serif: "+ Schrift
  Debug "Fonthöhe:  " + Hoehe
EndIf

Re: TextHeight versagt bei Dynamischer Font-Nummer?!

Verfasst: 03.10.2014 10:34
von Sirius-2337
Bei dem zweiten Code bekomme ich gar keine Debug Ausgabe bis ich

Code: Alles auswählen

DrawingFont(GadgetFont)
in

Code: Alles auswählen

DrawingFont(FontID(GadgetFont))
ändere.
Dann bekomme ich bei beiden Codes das selbe Ergebnis.

Ich denke das ist in der Hilfe falsch beschrieben, da dort steht, dass die FontID von LoadFont() zurückgegeben wird, was aber ofenbar nicht der Fall ist, denn auch im Beispiel in der Hilfe wird #PB_Any bei LoadFont() und FontID() bei SetGadgetFont() verwendet.

Re: TextHeight versagt bei Dynamischer Font-Nummer?!

Verfasst: 03.10.2014 10:41
von NicknameFJ
Hallo Sirius-2337,

danke Dir.


Da hätte ich auch selbst drauf kommen können mal FontID zu probieren. :oops:

Manchmal .... echt schlimm. :D :)

Re: TextHeight versagt bei Dynamischer Font-Nummer?!

Verfasst: 03.10.2014 10:43
von Sicro
Zudem, was Sirius-2337 sagte, empfehle ich dir noch folgende Änderung:

Code: Alles auswählen

If IsFont(GadgetFont)
  FreeFont(GadgetFont)
EndIf

Re: TextHeight versagt bei Dynamischer Font-Nummer?!

Verfasst: 03.10.2014 11:04
von ts-soft
Sirius-2337 hat geschrieben: Ich denke das ist in der Hilfe falsch beschrieben, da dort steht, dass die FontID von LoadFont() zurückgegeben wird, was aber ofenbar nicht der Fall ist, denn auch im Beispiel in der Hilfe wird #PB_Any bei LoadFont() und FontID() bei SetGadgetFont() verwendet.
LoadFont hat geschrieben:Gibt einen Wert ungleich Null zurück, wenn der Zeichensatz erfolgreich geladen wurde, und Null wenn nicht. Wenn #PB_Any als #Font Parameter verwendet wurde, dann wird bei Erfolg die generierte Nummer zurückgegeben.
Das steht da nirgends und es verhält sich so, wie bei allen Objekten mit #PB_Any!

[erledigt] TextHeight versagt bei Dynamischer Font-Nummer?!

Verfasst: 03.10.2014 11:25
von NicknameFJ
Danke auch an Sicro und TS-Soft für die Hinweise

Re: TextHeight versagt bei Dynamischer Font-Nummer?!

Verfasst: 03.10.2014 12:16
von Sirius-2337
ts-soft hat geschrieben:
Sirius-2337 hat geschrieben: Ich denke das ist in der Hilfe falsch beschrieben, da dort steht, dass die FontID von LoadFont() zurückgegeben wird, was aber ofenbar nicht der Fall ist, denn auch im Beispiel in der Hilfe wird #PB_Any bei LoadFont() und FontID() bei SetGadgetFont() verwendet.
LoadFont hat geschrieben:Gibt einen Wert ungleich Null zurück, wenn der Zeichensatz erfolgreich geladen wurde, und Null wenn nicht. Wenn #PB_Any als #Font Parameter verwendet wurde, dann wird bei Erfolg die generierte Nummer zurückgegeben.
Das steht da nirgends und es verhält sich so, wie bei allen Objekten mit #PB_Any!

Wusste nicht das das in der Deutschen Hilfe richtig steht ich verwende immer die englische und da steht:
LoadFont hat geschrieben:Returns the ID of the font. This result is sometimes also referred to as a 'Handle'. Take a look at the extra chapter Handles and Numbers for more information.
Edit: Nein, auch falsch hab mich verlesen Sorry. :oops: