Page 2 sur 2
Re: LoadFont
Publié : mar. 02/mars/2010 18:02
par venom
Le code de kernadec fonctionne très bien sur mon seven
Bien entendu la fonte est bien installer dans le dossier du système d'exploitation, pas dans mon C: par exemple.
@++
Re: LoadFont
Publié : mar. 02/mars/2010 23:16
par PAPIPP
Bonjour à tous
peut-être avec la fonction Fontrequester qui permet de choisir parmi les polices installées
Code : Tout sélectionner
Resultat = FontRequester("*", 0, #PB_FontRequester_Effects)
If Resultat
Message$ = "Vous avez sélectionné la police suivante :" + #LF$
Message$ + "Nom : " + SelectedFontName() + #LF$
Message$ + "Taille : " + Str(SelectedFontSize()) + #LF$
Message$ + "Couleur : " + Str(SelectedFontColor()) + #LF$
If SelectedFontStyle() & #PB_Font_Bold
Message$ + "Gras" + #LF$
EndIf
If SelectedFontStyle() & #PB_Font_StrikeOut
Message$ + "Barré" + #LF$
EndIf
If SelectedFontStyle() & #PB_Font_Underline
Message$ + "Souligné" + #LF$
EndIf
Else
Message$ = "La sélection a été annulée."
EndIf
MessageRequester("FontRequester", Message$, #PB_MessageRequester_Ok)
A+
Re: LoadFont
Publié : mer. 03/mars/2010 12:32
par SPH
Donc, vous etes en train de me confirmer qu'on ne peux pas utiliser une fonte sauvegardé dans le repertoire du programme que l'on est en train de coder ? Donc, utiliser une fonte en local n'est pas possible, je ne suis pas fou ?
Peut etre avais je naturellement compris que PB regardait le repertoire courant pour voir si la fonte etait la avant de regarder si elle est dans windows/font... (apres coup, je me suis dit ca)
Re: LoadFont
Publié : mer. 03/mars/2010 23:05
par PAPIPP
Bonjour SPH
Je suis tout à fait d'accord .il faut que la police soit installée
A+
PP
Re: LoadFont
Publié : jeu. 04/mars/2010 9:45
par kelebrindae
Euh, ben moi, je suis tout-à-fait pas d'accord.
Je m'explique: dans le programme sur lequel je bosse actuellement, je crois que je fais exactement ce que tu veux faire (si j'ai bien compris): j'ai dans le répertoire de travail de mon .exe une police de caractères
qui n'est pas installée dans Windows, je la charge au début de mon code, et je peux l'utiliser ensuite avec des DrawText.
Je te file la portion de code qui fait le chargement:
Code : Tout sélectionner
AddFontResource_(GetCurrentDirectory()+"amstrad-accent.fnt")
SendMessage_(#HWND_BROADCAST, #WM_FONTCHANGE, 0, 0)
FontID1 = LoadFont(0,"Amstrad CPC accents",8)
(le fichier ".fnt" est dans le même répertoire que le source .pb)
Tu remarqueras que le LoadFont est fait sur le nom "en clair" de la fonte, et non sur le nom du fichier.
De plus, le premier paramètre de LoadFont
doit être "0", et non "#PB_any"; sinon ça ne marche pas (chez moi, en tout cas).
Mais c'est vrai que c'est assez sensible; il ne faut pas grand-chose pour que ça ne marche plus...

Re: LoadFont
Publié : jeu. 04/mars/2010 10:36
par kernadec
bonjour kelebrindae
merci pour l'astuce c'est vrai,
mais, il faut faire attention avec AddFontRessource_() on doit ecrire "le chemin et nom du fichier fonte.ttf"
tandis qu'avec LoadFont, il faut utiliser le "nom de la police".
on peut mettre avec Loadfont 1,2,3,4 etc.. car ça marche sur ma machine avec XP.
et ajouter qu'il y a l'inverse de la commande avec RemoveFontRessource_
Cordialement
Code : Tout sélectionner
;http://cooltext.com/Download-Font-Andalus
AddFontResource_("c:\purebasic\andlso.ttf")
SendMessage_(#HWND_BROADCAST, #WM_FONTCHANGE, 0, 0)
LoadFont(2,"andalus",24)
LoadFont(1,"Arial",24)
If OpenWindow(0, 100, 200, 300, 200, "2D Drawing Test")
If CreateImage(0, 300, 200)
If StartDrawing(ImageOutput(0))
DrawingFont(FontID(2))
DrawText(10,50,"FONTE ANDALUS")
DrawingFont(FontID(1))
DrawText(10,90,"FONTE ARIAL")
StopDrawing()
EndIf
EndIf
ImageGadget(0, 0, 0, 0, 0, ImageID(0))
Repeat
EventID = WaitWindowEvent()
Until EventID = #PB_Event_CloseWindow
EndIf
Re: LoadFont
Publié : jeu. 04/mars/2010 10:45
par Backup
heu ! moi j'ai répondu dans le cadre de PureBasic et de ses fonctions
qui oblige bien la fonte a etre déja installée !
si tu utilise les Apis windows , ok, mais qu'en est 'il sur Linux ,osX ?
bon bien sur apres tout , l'ideal serai de disposer d'un cross-compilateur , comme ça on ne se prendrai plus la tete
Merci pour l'astuce , je vais la mettre en conserve

Re: LoadFont
Publié : jeu. 04/mars/2010 11:08
par PAPIPP
Bonjour à tous
à SPH Dobro Kernadec et kelebrindae
Je viens de faire un essai avec les 2 API et une police qui n'est pas installée
les 2 API installent provisoirement la police
Exemple :
1) Choisissez une police non installée
2) Après reboot vous testez le programme suivant avec commentaire sur les 2 premières lignes
Vous ne trouvez pas la police dans le répertoire
3) Enlevez les commentaires sur les 2 premières lignes et lancez la compile pas de police
mais elle est utilisable
4) Replacez les commentaires et lancez la compile la police n'est plus utilisable
Code : Tout sélectionner
; AddFontResource_("c:\army hollow condensed.tff")
; SendMessage_(#HWND_BROADCAST, #WM_FONTCHANGE, 0, 0)
; FontID1 = LoadFont(0,"army hollow condensed",8)
Resultat = FontRequester("i:\indispensable\*", 0, #PB_FontRequester_Effects)
If Resultat
Message$ = "Vous avez sélectionné la police suivante :" + #LF$
Message$ + "Nom : " + SelectedFontName() + #LF$
Message$ + "Taille : " + Str(SelectedFontSize()) + #LF$
Message$ + "Couleur : " + Str(SelectedFontColor()) + #LF$
If SelectedFontStyle() & #PB_Font_Bold
Message$ + "Gras" + #LF$
EndIf
If SelectedFontStyle() & #PB_Font_StrikeOut
Message$ + "Barré" + #LF$
EndIf
If SelectedFontStyle() & #PB_Font_Underline
Message$ + "Souligné" + #LF$
EndIf
Else
Message$ = "La sélection a été annulée."
EndIf
MessageRequester("FontRequester", Message$, #PB_MessageRequester_O
Conclusion : Les 2 premières lignes du PRG Installent provisoirement la police
A+
Re: LoadFont
Publié : jeu. 04/mars/2010 11:27
par gnozal
Re: LoadFont
Publié : jeu. 04/mars/2010 12:14
par kelebrindae
@Gnozal:
Oups! Je n'avais pas vu que tu avais déjà mis le code. Désolé...
