System.Drawing.Graphics 中的 IntPtr.Zero 是啥意思
Posted
技术标签:
【中文标题】System.Drawing.Graphics 中的 IntPtr.Zero 是啥意思【英文标题】:What does IntPtr.Zero mean in System.Drawing.GraphicsSystem.Drawing.Graphics 中的 IntPtr.Zero 是什么意思 【发布时间】:2016-09-01 17:23:30 【问题描述】:我需要在下面的函数中得到 IntPtr.Zero 的确切含义。 我使用此函数将 word 文档文本范围位置像素值转换为 WPF 单位值。
Graphics g = Graphics.FromHwnd(IntPtr.Zero)
这通常说通过句柄,但我没有得到它。
【问题讨论】:
【参考方案1】:Graphics.FromHwnd
方法用于从窗口的指定处理程序创建Graphics
对象。
当您将IntPtr.Zero
作为参数传递时,您正在从Windows 桌面创建一个Graphics
,允许您直接在屏幕上绘图。
【讨论】:
【参考方案2】:IntPtr
是一种特定于平台的方式来表示句柄或指针。在 32 位系统上,指针为 32 位宽,而在 64 位系统上,指针为 64 位宽。这种类型的存在是为了向您隐藏这些差异。
IntPtr.Zero 表示一个句柄或指针,其值为 0(本质上为 null)。您可以在 API 需要 Windows API 样式句柄的地方使用它,例如在您的示例中的 FromHwnd
调用中。在 Windows API 中,HWND 是一个窗口句柄,其中 null 表示“无窗口”。要通过 C# 传递它,请使用 IntPtr.Zero。
【讨论】:
“在 Windows API 中,HWND 是一个窗口句柄,其中 null 表示“无窗口”。” - Windows API 中没有这样的约定。只要HWND
参数是可选的,它就带有特定的语义。由于System.Graphics.Drawing
包装了 GDI+,它是根据 GDI 实现的,我假设这会检索代表整个屏幕的对象,尽管没有具体记录。以上是关于System.Drawing.Graphics 中的 IntPtr.Zero 是啥意思的主要内容,如果未能解决你的问题,请参考以下文章
手记解决Graphics.DrawImage带ImageAttributes在XP报内存不足的问题
如何解决 winforms 错误“GDI+ 中发生一般错误。”?