Erste Hilfe bei Font

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Ironsmurf
Beiträge: 111
Registriert: 04.01.2006 12:57
Computerausstattung: AMD FX(tm)-6300 Six-Core Processor
3.50 GHz / 8 GB Ram
Windows 7 / 64bit / Ultimate
Purebasic 5.20 LTS (Windows - x86)
Wohnort: Deutschland

Erste Hilfe bei Font

Beitrag von Ironsmurf »

Hallo zusammen

ich bin noch blutiger Anfänger und komme mit dem Befehl LOAD FONT
nicht klar, wer ist so nett es mir einmal zu erklären.

Code: Alles auswählen


If OpenWindow(0, 0, 0, 800, 400, #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget, "MAX MOVIE")And CreateGadgetList(WindowID(0)) 
FontName$ = "Times New Roman"
FontSize$ = "14"
LoadFont (0,FontName$,FontSize$,#PB_Font_Italic)

TextGadget(1, 10, 10,800,400,"Hallo, ich bin ein Test Text in einem Windows Fenster")

EndIf 
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow 
End


Dieser Text soll so wie er ist erscheinen, aber in Times New Roman, Schriftgröße 14 und kursiv

Danke im voraus für eure Hilfe
Es kommt immer auf die Sichtweise des Betrachters an.
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

Beitrag von ts-soft »

Size ist ein Long, kein String, ansonsten den Font dem Gadget zuzuordnen.

Code: Alles auswählen

If OpenWindow(0, 0, 0, 800, 400, #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget, "MAX MOVIE")And CreateGadgetList(WindowID(0))


TextGadget(1, 10, 10,800,400,"Hallo, ich bin ein Test Text in einem Windows Fenster")
SetGadgetFont(1, LoadFont(0, "Times New Roman", 14, #PB_Font_Italic))

EndIf
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
End 
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
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Hi!
Ich wollte auch noch mal meine Arbeitsweise mit Fonts vorstellen:
Ich lade Fonts immer mit #PB_Any. Dann gibt die Funktion LoadFont() ja die FontID zurück, und die lasse ich immer in einer Variablen speichern. Dann brauche ich nicht, useFont(#arial) bei jedem SetGadgetFont() angeben, sondern es reicht arial.
Beispiel:

Code: Alles auswählen

arial_12=useFont(LoadFont(#PB_any, "Arial", 12, #PB_Font_HighQuality))
arial_14_b=useFont(LoadFont(#PB_Any, "Arial", 14, #PB_Font_HighQuality|#PB_Font_Bold))
verdana_10=useFont(LoadFont(#PB_Any, "Verdana", 10, #PB_Font_HighQuality))

SetGadgetFont(#eingabefeld, arial_14)
SetGadgetFont(#textfenster, verdana_10)
Wenn man in Zeile 15 bis 17 Die Fonts so einläd, kann man ruhigen Gewissens in Zeile 2077 die Zeilen mit SetGadgetFont() hinschreiben, ohne, dass man erst wieder raufscrollen muss. Wie man sieht, setzt sich der Variablenname bei mir immer aus "Name der Schiftart", Untersctrich und die Größe zusammen. Wenn ich Einen fetten Text haben, hänge ich noch ein _b hinten dran.

Ein weiterer kleienr Vorteil ist, dass man sich nicht mehr darum kümmern muss, dass man entsprechende Konstanten bereithält, die man normalerweise statt 'PB_Any einsetzen würde. Tipp: Wenn man vorher die Schriftartvariablen, also arial_12 usw. globalisiert (Global), dann kann man die geladenen Schriftarten auch in Procedures benutzen.
Zuletzt geändert von AND51 am 02.02.2006 15:03, insgesamt 1-mal geändert.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
HeX0R
Beiträge: 3055
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

@AND51:

Ich fürchte du hast das Prinzip von #PB_Any nicht ganz verstanden, es ist nämlich genau umgekehrt.
Wenn du eine feste Konstante benutzt, bekommst du als Ergebnis von LoadFont() dessen FontID, die auch sofort benutzt werden kann, ohne UseFont(FontID).
Benutzt du #PB_Any, bekommst du eben eine "Ersatz-Konstante" zurück (was in Wahrheit eine Adresse ist), die aber erst durch UseFont(Ersatz-Konstante) den tatsächlichen Font zurückgibt.

Ich hoffe das war jetzt halbwegs verständlich :freak:
Zuletzt geändert von HeX0R am 02.02.2006 14:02, insgesamt 1-mal geändert.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

AND51 hat geschrieben:Hi!
Ich wollte auch noch mal meine Arbeitsweise mit Fonts vorstellen:
Ich lade Fonts immer mit #PB_Any. Dann gibt die Funktion LoadFont() ja die FontID zurück, und die lasse ich immer in einer Variablen speichern. Dann brauche ich nicht, useFont(#arial) bei jedem SetGadgetFont() angeben, sondern es reicht arial.
Beispiel:

Code: Alles auswählen

arial_12=LoadFont(#PB_any, "Arial", 12, #PB_Font_HighQuality)
arial_14_b=LoadFont(#PB_Any, "Arial", 14, #PB_Font_HighQuality|#PB_Font_Bold)
verdana_10=LoadFont(#PB_Any, "Verdana", 10, #PB_Font_HighQuality)

SetGadgetFont(#eingabefeld, arial_14)
SetGadgetFont(#textfenster, verdana_10)
Wenn man in Zeile 15 bis 17 Die Fonts so einläd, kann man ruhigen Gewissens in Zeile 2077 die Zeilen mit SetGadgetFont() hinschreiben, ohne, dass man erst wieder raufscrollen muss. Wie man sieht, setzt sich der Variablenname bei mir immer aus "Name der Schiftart", Untersctrich und die Größe zusammen. Wenn ich Einen fetten Text haben, hänge ich noch ein _b hinten dran.

Ein weiterer kleienr Vorteil ist, dass man sich nicht mehr darum kümmern muss, dass man entsprechende Konstanten bereithält, die man normalerweise statt 'PB_Any einsetzen würde. Tipp: Wenn man vorher die Schriftartvariablen, also arial_12 usw. globalisiert (Global), dann kann man die geladenen Schriftarten auch in Procedures benutzen.
Wenn dann so :

Code: Alles auswählen

*arial_12.long=LoadFont(#PB_any, "Arial", 12, #PB_Font_HighQuality)
*arial_14_b.long=LoadFont(#PB_Any, "Arial", 14, #PB_Font_HighQuality|#PB_Font_Bold)
*verdana_10.long=LoadFont(#PB_Any, "Verdana", 10, #PB_Font_HighQuality)

SetGadgetFont(#eingabefeld, *arial_14\l)
SetGadgetFont(#textfenster, *verdana_10\l)
Benutzeravatar
HeX0R
Beiträge: 3055
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

hallodri hat geschrieben: Wenn dann so :

Code: Alles auswählen

*arial_12.long=LoadFont(#PB_any, "Arial", 12, #PB_Font_HighQuality)
*arial_14_b.long=LoadFont(#PB_Any, "Arial", 14, #PB_Font_HighQuality|#PB_Font_Bold)
*verdana_10.long=LoadFont(#PB_Any, "Verdana", 10, #PB_Font_HighQuality)

SetGadgetFont(#eingabefeld, *arial_14\l)
SetGadgetFont(#textfenster, *verdana_10\l)
Genau, oder so:

Code: Alles auswählen

arial_12=LoadFont(#PB_any, "Arial", 12, #PB_Font_HighQuality)
arial_14_b=LoadFont(#PB_Any, "Arial", 14, #PB_Font_HighQuality|#PB_Font_Bold)
verdana_10=LoadFont(#PB_Any, "Verdana", 10, #PB_Font_HighQuality)

SetGadgetFont(#eingabefeld, UseFont(arial_14_b))
SetGadgetFont(#textfenster, UseFont(verdana_10))
oder so:

Code: Alles auswählen

arial_12=LoadFont(#PB_any, "Arial", 12, #PB_Font_HighQuality)
arial_14_b=LoadFont(#PB_Any, "Arial", 14, #PB_Font_HighQuality|#PB_Font_Bold)
verdana_10=LoadFont(#PB_Any, "Verdana", 10, #PB_Font_HighQuality)

SetGadgetFont(#eingabefeld, PeekL(arial_14_b))
SetGadgetFont(#textfenster, PeekL(verdana_10))
oder ... :lol:
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

So, danke für eure Aufmerksamkeit, unser Lehrer macht auch imemr Fehle beim an-die-Tafel-schreiben, um unsere Aufmerksamkeit zu testen und genau das habe ich natürlich hier auch gemacht, ne :roll: :lol: ...

Nee, aber mal im Ernst, ich habe den obigen Code gändert, während ich als Forum-Neuling jeden Coe mit dem PB-Editor vorgeschrieben habe um ihn auf Fehler zu korrigieren schreibe ich zunehmend Code on-the-fly ins Forum und dabei war ich mir nicht sicher, ob ich bei der Methode von mir jetzt das useFont() brauche, oder nicht.

Ich habe den obigen Code von mir dementsprechend korrigiert.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
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

Beitrag von ts-soft »

AND51 hat geschrieben:während ich als Forum-Neuling jeden Coe mit dem PB-Editor vorgeschrieben habe um ihn auf Fehler zu korrigieren schreibe ich zunehmend Code on-the-fly ins Forum
So so, wir sind also nach 3 Monaten schon Profis Bild
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
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Also 1. sind es nun schon 4 Monate, seit ich hier im Forum anwesend bin
und 2. finde ich deinen Kommentar überhaupt nicht nett!
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
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

Beitrag von ts-soft »

AND51 hat geschrieben:Also 1. sind es nun schon 4 Monate, seit ich hier im Forum anwesend bin
und 2. finde ich deinen Kommentar überhaupt nicht nett!
Bild
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
Antworten