将笔转换为IntPtr

时间:2010-03-20 16:21:35

标签: c# gdi+ pointers

是否有一种简单的方法将System.Drawing.Pen转换为非托管对应方式?就像,如果你有这样的笔:

Pen p = new Pen(Color.Blue, 1f);
IntPtr ptr = p.ToPtr();

我知道这段代码不起作用,但是有没有办法同样地做到这一点?

1 个答案:

答案 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的未来版本,因为内部属性可能会发生变化......