| 

.NET C# Java Javascript Exception

2
Hallo zusammen,

ich habe in meinem Programm eine Schriftart als eingebettete Ressource. Das Aufrufen läuft ja ganz gut. Nun wollte ich einen anderen Font probieren, den die fontview.exe von Windows 7 auch korrekt anzeigt. Allerdings wird die Schriftart im Programm dann nicht benutzt, lediglich die Schriftgröße passt. Kann mich jemand aufklären, warum nicht alle Schriften im VB 2010 EE "akzeptiert" werden?

Der Schnipsel zum Einbinden der Schrift schaut so aus:

Dim resfont = My.Resources.FONTNAME
Dim fontCol As New System.Drawing.Text.PrivateFontCollection
fontCol.AddMemoryFont(System.Runtime.InteropServices.Marshal.UnsafeAddrOfPinnedArrayElement(resfont, 0), resfont.Length)
Dim fnt = New System.Drawing.Font(fontCol.Families(0), 11, FontStyle.Bold)
11.07.2012
muffi 1,4k 1 9
1 Antwort
1
Hi Muffi,

ich hab mal kurz gegoogelt, weil ich das zwar noch nie gemacht habe, aber mir gedacht habe, dass das doch auch gehen muß, ohne bis auf Speicher-Schubsereien hinunter zu gehen. Offenbar falsch gedacht. Hier sind 3 Links, die offenbar alle den gleichen Ansatz beschreiben, den Du verfolgst, aber mit ein paar wichtigen Ergänzungen:

http://www.codeproject.com/Articles/107376/Embedding-Font-To-Resources
http://zerosandtheone.com/blogs/vb/archive/2009/11/20/vb-net-include-a-font-as-an-embedded-resource-in-your-application.aspx
http://stackoverflow.com/questions/2928383/use-resource-font-directly-in-vb-net-c

Alle drei kopieren sich den Font in einen Speicherbereich, den sie zuvor über AllocCoTaskMem alloziiert haben, und zwei weisen zudem darauf hin, dass der ganze Spaß nur funktioniert, wenn UseCompatibleTextRendering auf true gesetzt wird.
12.07.2012
Matthias Hlawatsch 13,2k 4 9
Dem Schalter UseCompatibleTextRendering habe ich bislang nicht so viel Bedeutung beigemessen. Da es bei meinem Element (eine Textbox mit transparentem Hintergrund, erbt direkt von Textbox) diesen Schalter nicht gibt, werde ich auf die Spielerei wohl dann doch leider verzichten müssen. Nur merkwürdig, dass ein paar wenige Schriften trotzdem funktionieren, die Meisten aber nicht. Deine Links sind übrigens interessant, 2 von den 3 kannte ich noch nicht, obwohl ich auch schon viel gesucht hatte ;-)
muffi 12.07.2012
http://www.google.de/?q=.net+font+resource ;-)
Bei mir sind es dann die Treffer 6-8.
Matthias Hlawatsch 12.07.2012
Weil ich zwar nicht die Lösung, aber einen Workaround des Problems durch Deine Links gefunden habe (Panel mit Autoscroll + innenliegender Label), gibt's das grüne Hackerl :-)
muffi 12.07.2012
Danke! Freut mich, daß ich helfen konnnte :-)
Matthias Hlawatsch 12.07.2012

Stelle deine .net-Frage jetzt!