Comment puis-je intégrer une police dans une application Visual Basic .Net? qui devrait être valide à chaque système d'exploitation.Comment puis-je intégrer une police dans une application Visual Basic .Net?
Répondre
Il est possible d'incorporer une police dans une application et de l'utiliser si cette police n'est pas disponible sur le système de l'utilisateur.
Vous créez simplement un PrivateFontCollection et le peupler avec vos polices puis vous pouvez les utiliser comme vous s'il vous plaît. Selon MSDN, cette méthode ne concerne pas les systèmes d'exploitation avant que Windows 2000.
De Remarques section de PrivateFontCollection.AddFontFile méthode:
Lorsque vous utilisez une police privée sur les systèmes d'exploitation avant Windows 2000, la police par défaut, généralement Microsoft Sans Serif, sera remplacée.
Si vous avez l'intention de votre application à utiliser sur Windows 2000 et plus récent, vous pouvez suivre ce code que j'ai écrit pour voir comment mettre en œuvre les polices privées.
Public Class Form1
Dim pfc As System.Drawing.Text.PrivateFontCollection
Dim ifc As System.Drawing.Text.InstalledFontCollection
Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
pfc = New System.Drawing.Text.PrivateFontCollection()
ifc = New System.Drawing.Text.InstalledFontCollection()
LoadPrivateFonts({My.Resources.Series_60_ZDigi, My.Resources.Times_NR_Phonetics_2})
End Sub
''' <summary>Loads the private fonts.</summary>
''' <param name="fonts">The fonts to be loaded into the private font collection.</param>
Private Sub LoadPrivateFonts(ByVal fonts As IEnumerable(Of Byte()))
For Each resFont In fonts
pfc.AddMemoryFont(Runtime.InteropServices.Marshal.UnsafeAddrOfPinnedArrayElement(resFont, 0), resFont.Length)
Next
End Sub
''' <summary>Gets the FontFamily whose name matches the one specified.</summary>
''' <param name="fontName">Name of the FontFamily to be returned.</param>
''' <param name="defaultFamily">
''' Optional. The default font family to be returned if the specified font is not found
''' </param>
Private Function GetFontFamily(ByVal fontName As String, Optional ByVal defaultFamily As FontFamily = Nothing) As FontFamily
If String.IsNullOrEmpty(fontName) Then
Throw New ArgumentNullException("fontName", "The name of the font cannont be null.")
End If
Dim foundFonts = From font In ifc.Families.Union(pfc.Families) Where font.Name.ToLower() = fontName.ToLower()
If foundFonts.Any() Then
Return foundFonts.First()
Else
Return If(defaultFamily, FontFamily.GenericSansSerif)
End If
End Function
Private Sub Form1_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed
'free the resources used by the font collections
pfc.Dispose()
ifc.Dispose()
End Sub
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim g = e.Graphics
Using br As Brush = Brushes.Black
g.DrawString("1234567890ABCDEF", New Font(GetFontFamily("Series 60 ZDigi"), 18), br, New Point(20, 20))
g.DrawString("ABCDEFGHIJKLMNOP", New Font(GetFontFamily("Times NR Phonetics 2"), 18), br, New Point(20, 100))
End Using
End Sub
End Class
je charge les deux polices que j'utilise dans l'application (série 60 ZDigi, une police de mon téléphone Nokia et Times NR Phonétique 2, une police de mon application dictionnaire) à partir des ressources dans la collection de la police privée dans le Sub New()
.
Ensuite, j'appelle la méthode GetFontFamily
pour obtenir la police désirée à peindre sur le formulaire.
Il ne devrait pas être trop difficile à intégrer dans vos applications.
Cheers.
Vous ne pouvez pas. À l'heure actuelle, il n'existe pas de norme multiplate-forme pour les polices incorporées dans une application Winforms standard. Le mieux que vous puissiez faire est d'intégrer des fichiers de polices spécifiques à un système d'exploitation, de détecter le système d'exploitation sur lequel vous vous trouvez et d'installer la police par programme. D'autre part, une application WPF dans VB.net pourrait fonctionner pour vos besoins, mais j'ai le sentiment que ce n'est pas là où vous allez. Pour plus d'informations sur le package des polices avec une application WPF, voir this MSDN article.
- 1. Puis-je intégrer une police personnalisée dans une application Android?
- 2. intégrer une police dans javascript
- 3. Comment intégrer une police avec mon application C#? (en utilisant Visual Studio 2005)
- 4. Arraylist dans Visual Basic .net
- 5. Comment intégrer Flash dans une application de bureau dans .NET?
- 6. Comment créer une variable dans Visual Basic?
- 7. Visual Basic .NET Scheduling Threads
- 8. Visual Basic .Net 3D Engine
- 9. Comment intégrer paypal dans une application?
- 10. Comment intégrer des données dans une application
- 11. Comment intégrer une police dans un fichier PDF avec RDLC
- 12. Comment importer une feuille de calcul Excel dans une application Visual Basic
- 13. Intégrer une application Silverlight dans une autre application Silverlight
- 14. comment intégrer une application web existante avec une application Android
- 15. comment publier une application .net
- 16. forme élégante peau en Visual basic .Net?
- 17. Comment déclarez-vous un littéral Char dans Visual Basic .NET?
- 18. Blackberry: comment intégrer une vidéo YouTube dans une application
- 19. Comment intégrer une bibliothèque python dans une application C++?
- 20. Comment intégrer une application Web ASP.NET dans une autre?
- 21. Comment intégrer une mini-console dans une application Java?
- 22. Intégrer une application Silverlight dans une application Windows Forms
- 23. intégrer une application WinForms dans une page Web?
- 24. Comment appeler une méthode Visual Basic 6.0 dans C#?
- 25. intégrer Google Sky Map dans une application
- 26. Visual Basic .NET Power Pack 2003
- 27. Comment puis-je définir les options régionales dans une application Visual Basic 6.0?
- 28. annonces Intégrer dans une application Windows
- 29. Intégrer Twitter dans une application BlackBerry
- 30. Visual Basic dans VS2003/2008
Je déteste faire éclater ta bulle mais ** Ca peut être fait **. Il peut ne pas fonctionner sur tous les systèmes d'exploitation, mais il fonctionne à partir de Win2k. Voir ma réponse pour savoir comment cela est fait. –