Graphics.ReleaseHdc 方法

定义

释放之前调用 GetHdc() 此方法 Graphics获取的设备上下文句柄。

重载

名称 说明
ReleaseHdc()

释放之前调用 GetHdc() 此方法 Graphics获取的设备上下文句柄。

ReleaseHdc(IntPtr)

释放之前调用 GetHdc() 此方法 Graphics获取的设备上下文句柄。

ReleaseHdc()

Source:
Graphics.cs
Source:
Graphics.cs
Source:
Graphics.cs
Source:
Graphics.cs
Source:
Graphics.cs
Source:
Graphics.cs
Source:
Graphics.cs
Source:
Graphics.cs

释放之前调用 GetHdc() 此方法 Graphics获取的设备上下文句柄。

public:
 virtual void ReleaseHdc();
public void ReleaseHdc();
abstract member ReleaseHdc : unit -> unit
override this.ReleaseHdc : unit -> unit
Public Sub ReleaseHdc ()

实现

注解

GetHdcReleaseHdc 是两种方法,可用于获取和释放Windows设备的句柄。 完成Windows句柄后,应始终按照调用 GetHdcReleaseHdc

另请参阅

适用于

ReleaseHdc(IntPtr)

Source:
Graphics.cs
Source:
Graphics.cs
Source:
Graphics.cs
Source:
Graphics.cs
Source:
Graphics.cs
Source:
Graphics.cs
Source:
Graphics.cs
Source:
Graphics.cs

释放之前调用 GetHdc() 此方法 Graphics获取的设备上下文句柄。

public:
 void ReleaseHdc(IntPtr hdc);
public void ReleaseHdc(IntPtr hdc);
member this.ReleaseHdc : nativeint -> unit
Public Sub ReleaseHdc (hdc As IntPtr)

参数

hdc
IntPtr

nativeint

对前一次调用 GetHdc() 此方法 Graphics获取的设备上下文的句柄。

示例

下面的代码示例设计用于 Windows 窗体,它需要 PaintEventArgse,这是 Paint 事件处理程序的参数。 该示例演示如何调用 Windows GDI 函数来执行与 GDI+ Graphics 方法相同的任务。 该示例执行以下操作:

  • 定义Windows DLL 文件 gdi32.dll的互操作性DllImportAttribute 属性。 此 DLL 包含所需的 GDI 函数,并将该 DLL 中的函数定义为 Rectangle 外部函数。

  • 创建红色笔。

  • 使用笔,使用 GDI+ DrawRectangle 方法将矩形绘制到屏幕。

  • 定义内部指针类型变量 hdc ,并将其值设置为窗体的设备上下文的句柄。

  • 使用 GDI Rectangle 函数将矩形绘制到屏幕。

  • 释放由参数表示 hdc 的设备上下文。

private:
   [System::Runtime::InteropServices::DllImportAttribute("gdi32.dll")]
   static bool Rectangle2( IntPtr hdc, int ulCornerX, int ulCornerY, int lrCornerX, int lrCornerY );

public:
   void GetHdcForGDI2( PaintEventArgs^ e )
   {
      // Create pen.
      Pen^ redPen = gcnew Pen( Color::Red,1.0f );

      // Draw rectangle with GDI+.
      e->Graphics->DrawRectangle( redPen, 10, 10, 100, 50 );

      // Get handle to device context.
      IntPtr hdc = e->Graphics->GetHdc();

      // Draw rectangle with GDI using default pen.
      Rectangle2( hdc, 10, 70, 110, 120 );

      // Release handle to device context.
      e->Graphics->ReleaseHdc( hdc );
   }
[System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]
private static extern bool Rectangle2(
    IntPtr hdc,
    int ulCornerX, int ulCornerY,
    int lrCornerX, int lrCornerY);

private void GetHdcForGDI2(PaintEventArgs e)
{
    // Create pen.
    Pen redPen = new Pen(Color.Red, 1);

    // Draw rectangle with GDI+.
    e.Graphics.DrawRectangle(redPen, 10, 10, 100, 50);

    // Get handle to device context.
    IntPtr hdc = e.Graphics.GetHdc();

    // Draw rectangle with GDI using default pen.
    Rectangle2(hdc, 10, 70, 110, 120);

    // Release handle to device context.
    e.Graphics.ReleaseHdc(hdc);
}
<System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")> _
Private Shared Function Rectangle2(ByVal hdc As IntPtr, _
ByVal ulCornerX As Integer, ByVal ulCornerY As Integer, ByVal lrCornerX As Integer, _
ByVal lrCornerY As Integer) As Boolean
End Function

<System.Security.Permissions.SecurityPermission( _
System.Security.Permissions.SecurityAction.LinkDemand, Flags:= _
System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)> _
Private Sub GetHdcForGDI2(ByVal e As PaintEventArgs)

    ' Create pen.
    Dim redPen As New Pen(Color.Red, 1)

    ' Draw rectangle with GDI+.
    e.Graphics.DrawRectangle(redPen, 10, 10, 100, 50)

    ' Get handle to device context.
    Dim hdc As IntPtr = e.Graphics.GetHdc()

    ' Draw rectangle with GDI using default pen.
    Rectangle2(hdc, 10, 70, 110, 120)

    ' Release handle to device context.
    e.Graphics.ReleaseHdc(hdc)
End Sub

注解

设备上下文是基于 GDI 的Windows结构,用于定义一组图形对象及其关联的属性,以及影响输出的图形模式。

GetHdcReleaseHdc 方法的调用必须成对显示。 在方法和GetHdcReleaseHdc方法对的范围内,通常只对 GDI 函数进行调用。 在该范围内对生成Graphics参数的 hdc GDI+ 方法进行的调用失败,并出现ObjectBusy错误。 此外,GDI+ 会忽略在后续操作中对参数所做的Graphicshdc任何状态更改。

适用于