C# GDI+ 设置 map 模式

标签 c# gdi+ dllimport invalidoperationexception

我似乎在用 C# 实现 SetMapMode 时遇到了一些问题。不是 C# 专家,所以我看到错误并不感到惊讶。甚至认为编译很好 DrawLine 抛出 InvalidOperationException。有什么想法吗?

[DllImport("gdi32.dll")]
static extern int SetMapMode(IntPtr hdc, int fnMapMode);

myPen = new Pen(Color.Black, 1);
formGraphics = envMap.CreateGraphics();
IntPtr hdc = formGraphics.GetHdc();
SetMapMode(hdc, 3); // MM_LOMETRIC
formGraphics.DrawLine(myPen, (2 * rect.Right - 60) - 15, 8, (2 * rect.Right - 60), 0);
formGraphics.DrawLine(myPen, (2 * rect.Right - 60), 0, (2 * rect.Right - 60) - 15, -8);

提前致谢

最佳答案

最接近的是在 Graphics 对象上设置 PageUnit。据我所知,没有等价于 MM_LOMETRIC 的东西,但是有 Millimeter

您可能可以将其与 ScaleTransform 结合使用以获得所需的效果。

关于C# GDI+ 设置 map 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7962205/

相关文章:

c# - 从一个位置实例化尽可能多的游戏对象并在另一个位置结束

iis - GDI+ 中出现一般性错误 - 权限

c - 如何使用 __declspec( dllexport/import ) 从 DLL 导出/导入 C 结构/到控制台应用程序

c# - 我如何通过两种方式将父 UIElement 绑定(bind)到附加属性?

c# - LINQPad 中的反射与实际不同,可能是由于安全性?

c# - AvPlayer 正在下载 mp3 而不是流式传输

ASP.NET 创建缩略图服务器端

winapi - 为什么我的 Win32 gdi+ 游戏在 Windows 7 上慢得无法使用?

c# - 在 C# 中导入 DLL

c# - 我没有在 DLLImport 中使用的引用中看到 DLL