LoadFont

Archive.
Avatar de l’utilisateur
venom
Messages : 3071
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: LoadFont

Message par venom »

Le code de kernadec fonctionne très bien sur mon seven :wink:

Bien entendu la fonte est bien installer dans le dossier du système d'exploitation, pas dans mon C: par exemple.







@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: LoadFont

Message 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+
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Avatar de l’utilisateur
SPH
Messages : 4722
Inscription : mer. 09/nov./2005 9:53

Re: LoadFont

Message 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)
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: LoadFont

Message par PAPIPP »

Bonjour SPH
Je suis tout à fait d'accord .il faut que la police soit installée
A+
PP
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
kelebrindae
Messages : 579
Inscription : ven. 11/mai/2007 15:21

Re: LoadFont

Message par kelebrindae »

Euh, ben moi, je suis tout-à-fait pas d'accord. :wink:

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... :|
Les idées sont le souvenir de choses qui ne se sont pas encore produites.
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: LoadFont

Message 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

Dernière modification par kernadec le jeu. 04/mars/2010 11:15, modifié 3 fois.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: LoadFont

Message 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 :D

Merci pour l'astuce , je vais la mettre en conserve :)
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: LoadFont

Message 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+
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Re: LoadFont

Message par gnozal »

kelebrindae
Messages : 579
Inscription : ven. 11/mai/2007 15:21

Re: LoadFont

Message par kelebrindae »

@Gnozal:
Oups! Je n'avais pas vu que tu avais déjà mis le code. Désolé... :oops:
Les idées sont le souvenir de choses qui ne se sont pas encore produites.
Répondre