是否有一种简单的方法将System.Drawing.Pen转换为非托管对应方式?就像,如果你有这样的笔:
Pen p = new Pen(Color.Blue, 1f);
IntPtr ptr = p.ToPtr();
我知道这段代码不起作用,但是有没有办法同样地做到这一点?
答案 0 :(得分:1)
Pen
类有一个内部属性NativePen
,其中包含您想要的内容。您可以使用以下方法通过反射(如果您的代码具有适当的权限)访问此属性:
Pen p = new Pen(Color.Blue, 1f);
PropertyInfo pi = typeof(Pen).GetProperty("NativePen", BindingFlags.Instance | BindingFlags.NonPublic);
IntPtr ip = (IntPtr)pi.GetValue(p, null);
请注意,从理论上讲,这可能不适用于.NET-Framework的未来版本,因为内部属性可能会发生变化......