Поделиться через


Graphics.ReleaseHdc Метод

Определение

Освобождает дескриптор контекста устройства, полученный предыдущим вызовом метода GetHdc() этого Graphics.

Перегрузки

ReleaseHdc()

Освобождает дескриптор контекста устройства, полученный предыдущим вызовом метода GetHdc() этого Graphics.

ReleaseHdc(IntPtr)

Освобождает дескриптор контекста устройства, полученный предыдущим вызовом метода GetHdc() этого Graphics.

ReleaseHdc()

Исходный код:
Graphics.cs
Исходный код:
Graphics.cs
Исходный код:
Graphics.cs
Исходный код:
Graphics.cs
Исходный код:
Graphics.cs

Освобождает дескриптор контекста устройства, полученный предыдущим вызовом метода GetHdc() этого Graphics.

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

Реализации

Комментарии

GetHdc и ReleaseHdc — это два метода, которые позволяют получить и освободить дескриптор для устройства Windows. Вы всегда должны следовать вызову GetHdc с вызовом ReleaseHdc, когда вы закончите работу с дескриптором Windows.

См. также раздел

Применяется к

ReleaseHdc(IntPtr)

Исходный код:
Graphics.cs
Исходный код:
Graphics.cs
Исходный код:
Graphics.cs
Исходный код:
Graphics.cs
Исходный код:
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 Forms и требует PaintEventArgse, который является параметром обработчика событий Paint. В примере показан вызов функции GDI Windows для выполнения той же задачи, что и метод GDI+ Graphics. Код выполняет следующие действия:

  • Определяет атрибут DllImportAttribute взаимодействия для gdi32.dllDLL-файла Windows. Эта библиотека DLL содержит нужную функцию GDI и определяет функцию Rectangle в этой библиотеке DLL как внешнюю.

  • Создает красное перо.

  • С помощью пера рисует прямоугольник на экран с помощью метода 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

Комментарии

Контекст устройства — это структура Windows на основе GDI, которая определяет набор графических объектов и их связанных атрибутов, а также графические режимы, влияющие на выходные данные.

Вызовы методов GetHdc и ReleaseHdc должны отображаться в парах. В области пары методов GetHdc и ReleaseHdc обычно выполняются вызовы только к функциям GDI. Вызовы в этой области, сделанные в методы GDI+ Graphics, которые вызвали сбой параметра hdc с ошибкой ObjectBusy. Кроме того, GDI+ игнорирует любые изменения состояния, внесенные в Graphics параметра hdc в последующих операциях.

Применяется к