Ich habe eine Beschriftung auf meinem WinForm und möchte eine benutzerdefinierte Schriftart mit dem Namen XCalibur verwenden, um es schimmernder erscheinen zu lassen.
Wenn ich eine benutzerdefinierte Schriftart auf einem Etikett verwende und dann die Lösung erstelle und dann die Dateien in \ bin \ Release ziehe, sieht der Endbenutzer die Etiketten mit meiner benutzerdefinierten App, die ich verwendet habe, unabhängig davon, ob diese Schriftart installiert ist oder nicht ?
Wenn dies nicht der Fall ist, wie können Sie benutzerdefinierte Schriftarten für Labels.Text verwenden?
Betten Sie die Schriftart als Ressource ein (oder fügen Sie sie einfach in das Verzeichnis bin ein), und verwenden Sie dann die Datei PrivateFontCollection
um die Schriftart zu laden (Siehe die Funktionen AddFontFile
und AddMemoryFont
). Sie verwenden dann die Schriftart normal wie es auf dem Computer installiert wurde.
Die PrivateFontCollection-Klasse ermöglicht Anwendungen zur Installation eines privaten Version einer vorhandenen Schriftart ohne die Anforderung, das System zu ersetzen Version der Schriftart. Zum Beispiel, GDI + kann eine private Version des Arial-Schriftart zusätzlich zu Arial Schriftart, die das System verwendet. PrivateFontCollection kann ebenfalls verwendet werden um Schriften zu installieren, die nicht existieren das Betriebssystem.
Nachdem ich vielleicht 30 - 50 Beiträge durchgesehen habe, habe ich endlich eine Lösung gefunden, die wirklich funktioniert! Bitte folgen Sie den Schritten nacheinander:
1.) Fügen Sie Ihre Schriftartdatei (in meinem Fall ttf-Datei) in Ihre Anwendungsressourcen ein. Doppelklicken Sie dazu auf die Datei " Resources.resx ".
2.) Markieren Sie die Option "Ressource hinzufügen" und klicken Sie auf den Abwärtspfeil. Wählen Sie die Option "Vorhandene Datei hinzufügen". Suchen Sie nun Ihre Schriftartdatei, wählen Sie sie aus und klicken Sie auf OK. Speichern Sie die Datei "Resources.resx".
3.) Erstellen Sie eine Funktion (z. B. InitCustomLabelFont ()) und fügen Sie den folgenden Code hinzu.
%Vor%Ihre benutzerdefinierte Schriftart wurde der PrivateFontCollection hinzugefügt.
4.) Ordnen Sie als nächstes die Schriftart Ihrem Label zu und fügen Sie einen Standardtext hinzu.
%Vor%5.) Gehen Sie zu Ihrem Formularlayout und wählen Sie Ihr Etikett. Klicken Sie mit der rechten Maustaste darauf und wählen Sie " Eigenschaften ". Suchen Sie nach der Eigenschaft " UseCompatibleTextRendering " und legen Sie sie auf " True " fest.
6.) Bei Bedarf können Sie die Schrift freigeben, nachdem Sie sicher sind, dass sie nie wieder verwendet werden kann. Rufen Sie die PrivateFontCollection.Dispose () -Methode auf, die Sie dann auch nutzen können Rufen Sie Marshal.FreeCoTaskMem (Daten) sicher. Es ist ziemlich üblich, die Schriftart nicht zu belasten und sie für das Leben der App geladen zu lassen.
7.) Führen Sie Ihre Anwendung aus. Sie werden nun sehen, dass Sie eine benutzerdefinierte Schriftart für das angegebene Etikett festgelegt haben.
Prost!