Seite 1 von 2

Erste Hilfe bei Font

Verfasst: 01.02.2006 19:06
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

Verfasst: 01.02.2006 19:23
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 

Verfasst: 01.02.2006 20:30
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.

Verfasst: 02.02.2006 13:45
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:

Verfasst: 02.02.2006 13:49
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)

Verfasst: 02.02.2006 14:14
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:

Verfasst: 02.02.2006 15:08
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.

Verfasst: 02.02.2006 15:13
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

Verfasst: 02.02.2006 18:42
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!

Verfasst: 02.02.2006 21:14
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