none
Utilisation de polices non installées RRS feed

  • Question

  • Salut ! 

    Est-il possible d'utiliser des polices non installées (qui sont sur un CD par exemple) pour attribuer la police à un TextBox pour voir un exemple. Je ne vois pas comment procéder ? L'inclure en ressource mais est-ce raisonnable s'il y en a des centaines ?

     Merci

    PS j'utilise VB 2008

    samedi 20 septembre 2014 16:28

Réponses

  • Trouvé ! 

            Dim privateFonts As New System.Drawing.Text.PrivateFontCollection()
            privateFonts.AddFontFile("D:\Softwares\Polices\ADALogo.TTF")
            Dim font As New System.Drawing.Font(privateFonts.Families(0), 12)
            TextBox1.Font = font
    

    • Marqué comme réponse Michel56100 lundi 22 septembre 2014 04:00
    lundi 22 septembre 2014 03:59

Toutes les réponses

  • bonjour,

    regarder ce lien vous avez la réponse que vous cherchez : http://fr.openclassrooms.com/forum/sujet/vb-net-polices-d-ecritures-non-installees

    samedi 20 septembre 2014 17:43
  • Bonjour,

    j'ai déjà visité ce lien. Mais comment mettre en ressource une police qui se trouve sur un CD ?

            Dim data As System.IntPtr = Marshal.AllocCoTaskMem(My.Resources.Airmole_Shaded.Length - 1)
    
            'copy the bytes to the unsafe memory block
            Marshal.Copy(My.Resources.Airmole_Shaded, 0, data, My.Resources.Airmole_Shaded.Length)
    
            'pass the font to the font collection
            privateFontCollection.AddMemoryFont(data, My.Resources.Airmole_Shaded.Length)
    
            'free the unsafe memory
            Marshal.FreeCoTaskMem(data)
    
            Dim fnt As Font = New Font(privateFontCollection.Families(0), 30)
    
            For Each lbl As Label In Me.Controls.OfType(Of Label)()
                lbl.UseCompatibleTextRendering = True
                lbl.Font = fnt
            Next

    My.Resources.Airmole_Shaded pose problème. Normal puisque cette ressource n'existe pas. Je ne connais pas les polices à l'avance.

    Merci


    samedi 20 septembre 2014 20:14
  • Bonjour,

    My.Resources.Airmole_Shaded pose problème. Normal puisque cette ressource n'existe pas. Je ne connais pas les polices à l'avance.
    Que voulez vous dire exactement ? Quel message d'erreur obtenez vous ?

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance - P.O.S Informatique
    Blog : http://gilles.tourreau.fr - Suivez-moi sur Twitter
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCSA : SQL Server 2012
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0 / TFS 2010 / Windows Azure

    dimanche 21 septembre 2014 19:58
    Modérateur
  • Bonjour,

    en fait, les polices se trouvent sur un CD. Ma question est : Comment charger ces polices pour les utiliser dans un textbox.

    L'exemple donné fonctionne si l'on charge dans VB la police de son choix. Là "My.Ressouce.Airemole_Shaded" fonctionne parce qu'on a chargé la police avant la compilation. C'est normal.

    Moi, je voudrais charger des polices qui sont sur un CD (par exemple) et pouvoir voir comment elles sont avec un TexteBox.Font = Police chargée sans qu'elle soit installée dans Windows.

    Merci

    • Modifié Michel56100 dimanche 21 septembre 2014 20:36
    dimanche 21 septembre 2014 20:35
  • Le code avec "My.Ressouce.Airemole_Shaded" fonctionne si j'ajoute la police dans VB et que je la nomme "Airemole_Shaded" mais comment chercher des polices en plus sans passer par les Propriété / Ressources de VB ?
    dimanche 21 septembre 2014 20:53
  • Bonjour,

    Il n'est pas possible d'utiliser une police via la classe Font qui n'est pas installé dans le système.

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance - P.O.S Informatique
    Blog : http://gilles.tourreau.fr - Suivez-moi sur Twitter
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCSA : SQL Server 2012
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0 / TFS 2010 / Windows Azure

    dimanche 21 septembre 2014 20:54
    Modérateur
  • Bonjour.

    Merci. Y-a-t-il un autre moyen ?

    lundi 22 septembre 2014 03:33
  • Trouvé ! 

            Dim privateFonts As New System.Drawing.Text.PrivateFontCollection()
            privateFonts.AddFontFile("D:\Softwares\Polices\ADALogo.TTF")
            Dim font As New System.Drawing.Font(privateFonts.Families(0), 12)
            TextBox1.Font = font
    

    • Marqué comme réponse Michel56100 lundi 22 septembre 2014 04:00
    lundi 22 septembre 2014 03:59
  • Dim privateFonts As New System.Drawing.Text.PrivateFontCollection()
            privateFonts.AddFontFile("D:\Softwares\Polices\ADALogo.TTF")
            Dim font As New System.Drawing.Font(privateFonts.Families(0), 12)
            TextBox1.Font = font
    lundi 22 septembre 2014 11:45
  • Bonjour,

    Merci pour l'astuce et d'en avoir fait profité la communauté !

    Je ne savez pas que l'on pouvait ajouter ces propres Font...

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance - P.O.S Informatique
    Blog : http://gilles.tourreau.fr - Suivez-moi sur Twitter
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCSA : SQL Server 2012
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0 / TFS 2010 / Windows Azure

    mardi 23 septembre 2014 23:33
    Modérateur
  • Bonsoir !

    De rien. Je suis bien content de trouver des réponses quand je poste sur ce forum alors quand je trouve la solution ailleurs ou par moi-même, je la publie.

    A bientôt

    mercredi 24 septembre 2014 00:09
  • Salut !

    Petit souci pour supprimer les polices chargée via Privatefonts

    Public PrivateFonts As New System.Drawing.Text.PrivateFontCollection()
    
    ... plus loin...
    PrivateFonts.AddFontFile("D:\Softwares\Polices\ADALogo.TTF")
    Dim font As New System.Drawing.Font(privateFonts.Families(0), 12)
    TextBox1.Font = font

    Pour libérer les polices chargées, je ne peux faire que PrivateFont.Dispose().

    Mais après avoir fait, cela, je ne peux plus charger de nouvelles polices. Je dois déclarer la variable "Public" car je m'en sert plusieurs fois.

    Il y a bien PrivateFont.Families.Clear mais il y a d'autre arguments à mettre que je ne connais pas. PrivateFont.Families(0).Dispose() ne marche pas non plus.

    Merci

    mercredi 15 octobre 2014 10:12