将 Pen 转换为 IntPtr

发布于 2024-08-26 15:28:40 字数 186 浏览 5 评论 0原文

有没有一种简单的方法可以将 System.Drawing.Pen 转换为其非托管对应项?就像,如果你有一支像这样的笔:

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

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

Is there a simple way to convert a System.Drawing.Pen into its unmanaged counterpart? Like, if you had a Pen like this:

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

I know this code doesn't work, but is there a way to do it similarly?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

伪心 2024-09-02 15:28:40

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 的未来版本中不起作用,因为内部属性可能会更改...

The Penclass has an internal property NativePen which contains exactly what you want. You can access this property through reflection (if your code has the appropriate permissions) using:

Pen p = new Pen(Color.Blue, 1f);
PropertyInfo pi = typeof(Pen).GetProperty("NativePen", BindingFlags.Instance | BindingFlags.NonPublic);
IntPtr ip = (IntPtr)pi.GetValue(p, null);

Be aware that theoretically this might not work in future versions of the .NET-Framework, since internal properties could change ...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文