I have successfully loaded a .ttf font. Now, how do I use it in a TextBox?
FILE: MainWindow.xaml.cs
FILE: MainWindow.xamlCode:namespace myNameSpace { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); LoadFont(); } [DllImport("gdi32.dll")] private static extern IntPtr AddFontMemResourceEx(IntPtr pbFont, uint cbFont, IntPtr pdv, [In] ref uint pcFonts); PrivateFontCollection mFontCollection = new PrivateFontCollection(); private void LoadFont() { // specify embedded resource name string resource = "myNameSpace.fixedsys.ttf"; // receive resource stream Stream fontStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resource); //create an unsafe memory block for the data System.IntPtr data = Marshal.AllocCoTaskMem((int)fontStream.Length); //create a buffer to read in to Byte[] fontData = new Byte[fontStream.Length]; //fetch the font program from the resource fontStream.Read(fontData, 0, (int)fontStream.Length); //copy the bytes to the unsafe memory block Marshal.Copy(fontData, 0, data, (int)fontStream.Length); // We HAVE to do this to register the font to the system (Weird .NET bug !) uint cFonts = 0; AddFontMemResourceEx(data, (uint)fontData.Length, IntPtr.Zero, ref cFonts); //pass the font to the font collection mFontCollection.AddMemoryFont(data, (int)fontStream.Length); //close the resource stream fontStream.Close(); //free the unsafe memory Marshal.FreeCoTaskMem(data); } } }
So, in my "OutputWindow_TEST" textbox, how do I add my embedded font?Code:<Window x:Class="myNameSpace.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Hello World" Height="768" Width="1366" Loaded="Window_Loaded" Closed="Window_Closed"> <Grid Background="Black"> <TextBox x:Name="OutputWindow_TEST" TextWrapping="Wrap" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Background="Black" Foreground="White" Width="338" /> </Grid> </Window>
I type the "FontFamily" property of the textbox and all my system fonts show up as options, but not the one I embedded.
Thanks.



LinkBack URL
About LinkBacks



