Entwerfen eines benutzerdefinierten Schriftartdialogs / -selektors für C #, der nicht wahre Schriftarten ausfiltert

8

Da der integrierte Schriftartdialog bei der Auswahl einer Schriftart vom Typ "Nicht zutreffend" die Ausnahme "Keine TrueType-Schriftart" zurückgibt, versuche ich, einen benutzerdefinierten Schriftartdialog mit Schriftfamilien zu erstellen, die nicht wahre Schriftarten ausfiltert.

Das Steuerelement funktioniert einwandfrei, aber ich brauche einen Größen- und Stilselektor für diesen Dialog. Ich poste den aktuellen Code. Bitte helfen Sie mir, eine Größe und eine Stilauswahl hinzuzufügen. Es könnte auch für Sie nützlich sein.

%Vor%

Ich habe das Projekt bei sourceforge Ссылка

gehostet     
techno 27.12.2011, 11:12
quelle

3 Antworten

1

Sie könnten den MyFontDialog wie folgt ändern:

%Vor%

Es wird ein Listenfeld neben dem Schriftarten-Listenfeld mit der Liste der verfügbaren Schriftarten erstellt. Wie bei der Größenauswahl können Sie einfach ein Listenfeld mit einer hartcodierten Liste der Größe hinzufügen: 8,9,10,11,12, 14,16,18,20,22,24,26,28,36,48 und 72 , genau wie der Standard FontDialog, da es sich um echte Schriftarten handelt.

    
Simon Mourier 04.01.2012, 21:16
quelle
0

Ссылка hat etwas VB-Code, um festzustellen, ob es sich um eine Schriftart handelt ist eine TT Schriftart. Alles, was es wirklich tut, ist einige Win32-API-Funktionen aufzurufen und die Ergebnisse zu überprüfen.

Es kann einige Schriftarten geben, die TT zu sein scheinen, aber nicht sind, selbst wenn sie mit der Win32-API untersucht werden (was der FontDialog wahrscheinlich sowieso macht). Wenn Win32 Ihr Problem nicht behebt, dann ist wahrscheinlich die einzige Möglichkeit, herauszufinden, ob eine Schriftart ungültig ist, nach einer Ausnahme zu suchen.

    
Kendall Frey 04.01.2012 14:24
quelle
0

OK, Umar, Sie sollten versuchen:

1) Verwenden Sie 'FontFamily.IsStyleAvailable', um das Abfangen von Ausnahmen zu vermeiden / minimieren - und verpassen daher einige verfügbare Schriftarten. 2) Spielen Sie etwas mit Graphics.MeasureString, um eine Größe für jede einzelne Schriftart einzustellen, die am besten aussieht UND Sie Spalten mit gleicher Höhe erhalten ...

Glücklich versuchen:)

Jens, Dänemark.

    
Jens 08.12.2013 06:18
quelle

Tags und Links