如何在.net中使用GDI+中没有的windows GDI方法?
本文关键字:windows GDI 方法 GDI+ net | 更新日期: 2023-09-27 18:14:58
我想在。net应用程序中调用GDI+中找不到的GDI方法。
特别是这个方法,它获得指定字体的字距对。我想在HTML5画布上实现字距(字母间距),目前不支持,我认为最好的方法是在我的服务器上拉出字距对,并返回一个字距表给客户端。
如何在。net中使用像这样的windows库函数?
你可以在Windows API
中找到这个方法来调用这个方法:
- 1:添加
System.Runtime.InteropServices
命名空间到你的项目 -
2:将
API
类添加到您的项目中,并让它使用GetKerningPairs
方法请记住,这个函数使用一个名为KERNINGPAIR
的结构体,我们需要确保它在我们的类中定义,否则我们会得到编译错误!class API { [DllImport("gdi32.dll")] static extern uint GetKerningPairs(IntPtr hdc, uint nNumPairs, [Out] KERNINGPAIR[] lpkrnpair); [StructLayout(LayoutKind.Sequential)] struct KERNINGPAIR { public ushort wFirst; // might be better off defined as char public ushort wSecond; // might be better off defined as char public int iKernAmount; public KERNINGPAIR(ushort wFirst, ushort wSecond, int iKernAmount) { this.wFirst = wFirst; this.wSecond = wSecond; this.iKernAmount = iKernAmount; } public override string ToString() { return (String.Format("{{First={0}, Second={1}, Amount={2}}}", wFirst, wSecond, iKernAmount)); } } }
现在你可以通过API
类
我觉得你运气不好。
根据这个线程
字距对似乎没有相关的类。字形将为字形索引和前进宽度生成合理的默认值。
也许可以尝试pinvoke,但正如该帖子下的注释所说
请注意:返回的数据似乎只适用于默认的unicode块。
可能有一种方法可以通过更改代码页来获得更多信息(严格地说是我的猜测)。
我能够得到所有字距数据的唯一方法是直接解析文件;至少可以说不容易。