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

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
NicknameFJ
Beiträge: 324
Registriert: 03.06.2007 14:36
Wohnort: Von der Sonne aus gesehen der dritte Planet

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

Beitrag 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
Zuletzt geändert von NicknameFJ am 03.10.2014 12:24, insgesamt 1-mal geändert.
PS: Alle im Text enthaltenen Schreibfehler sind beabsichtigt und dienen der Belustigung aller

Bild
Sirius-2337
Beiträge: 71
Registriert: 29.05.2010 20:55

Re: TextHeight versagt bei Dynamischer Font-Nummer?!

Beitrag 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.
Benutzeravatar
NicknameFJ
Beiträge: 324
Registriert: 03.06.2007 14:36
Wohnort: Von der Sonne aus gesehen der dritte Planet

Re: TextHeight versagt bei Dynamischer Font-Nummer?!

Beitrag 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 :)
PS: Alle im Text enthaltenen Schreibfehler sind beabsichtigt und dienen der Belustigung aller

Bild
Benutzeravatar
Sicro
Beiträge: 963
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: TextHeight versagt bei Dynamischer Font-Nummer?!

Beitrag von Sicro »

Zudem, was Sirius-2337 sagte, empfehle ich dir noch folgende Änderung:

Code: Alles auswählen

If IsFont(GadgetFont)
  FreeFont(GadgetFont)
EndIf
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: TextHeight versagt bei Dynamischer Font-Nummer?!

Beitrag 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!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
NicknameFJ
Beiträge: 324
Registriert: 03.06.2007 14:36
Wohnort: Von der Sonne aus gesehen der dritte Planet

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

Beitrag von NicknameFJ »

Danke auch an Sicro und TS-Soft für die Hinweise
PS: Alle im Text enthaltenen Schreibfehler sind beabsichtigt und dienen der Belustigung aller

Bild
Sirius-2337
Beiträge: 71
Registriert: 29.05.2010 20:55

Re: TextHeight versagt bei Dynamischer Font-Nummer?!

Beitrag 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:
Antworten