如何在带有.NET 2.0的Windows CE 5.0应用程序的c#中使用AddFontResource

问题描述 投票:0回答:1

我正在尝试使用 Visual Studio 2008 pro 和带有 .NET CF2.0 的 c# 为我的汽车中的 Windows CE 5.0 设备开发智能设备程序。我想使用 AddFontResourceEx 添加字体,但我无法让它工作。这是代码:

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private const uint FR_PRIVATE=0x10;
        [DllImport("GDI32.dll",EntryPoint="AddFontResourceEx")]
        static extern int AddFontResourceEx(string lpszFilename, uint fl, IntPtr pdv);
        
        private void button1_Click(object sender, EventArgs e)
        {
           AddFontResourceEx(".\\ELEPHNT.TTF", FR_PRIVATE, IntPtr.Zero);
           label1.ForeColor = Color.FromArgb(155, 25, 34);
           label1.Font = new Font("ELEPHNT.TTF", 18, FontStyle.Regular);
           label1.Text = "Hello world!";
        }
    }

它构建成功,我可以运行程序,但字体不会改变。我将字体文件添加到程序所在的同一目录中。你能告诉我出了什么问题吗?

编辑:对于那些想知道的人,这里是正确的代码


public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        
        private const uint FR_PRIVATE=0x10;
        
        [DllImport("coredll.dll",EntryPoint="AddFontResourceW")]
        private static extern int AddFontResourceW(string lpszFilename, uint fl, IntPtr pdv);
        
        private void button1_Click(object sender, EventArgs e)
        {
            AddFontResourceW("\\<fill in path>\\ELEPHNT.TTF", FR_PRIVATE, IntPtr.Zero);
            label1.ForeColor = Color.FromArgb(155, 25, 34);
            label1.Font = new Font("Elephant", 18, FontStyle.Regular);
            label1.Text = "Hello world!";
        }
    }

以上代码适用于可以处理 True Type 字体 (.ttf) 的 CE 设备。其他一些 CE 设备(例如我车上的设备)使用光栅(位图)字体(例如 .fnt 类型字体)。在这种情况下,入口点“AddFontResourceW”保持不变,但在其余代码中,您需要省略“W”,因此“AddFontResource”。

c# visual-studio-2008 windows-ce .net-2.0 smart-device
1个回答
0
投票

不能在 C# 代码中使用 C++ 声明,需要使用 pinvoke 和兼容的数据类型: http://www.pinvoke.net/search.aspx?search=addfontresource&namespace=[全部] 在 Windows CE 中没有相对路径,因此您必须使用字体文件的完整路径,从 .

开始
© www.soinside.com 2019 - 2024. All rights reserved.