Graphics.ReleaseHdc Graphics.ReleaseHdc Graphics.ReleaseHdc Graphics.ReleaseHdc Method

Определение

Освобождает дескриптор контекста устройства, полученный в результате предыдущего вызова метода GetHdc() данного объекта Graphics.Releases a device context handle obtained by a previous call to the GetHdc() method of this Graphics.

Перегрузки

ReleaseHdc() ReleaseHdc() ReleaseHdc() ReleaseHdc()

Освобождает дескриптор контекста устройства, полученный в результате предыдущего вызова метода GetHdc() данного объекта Graphics.Releases a device context handle obtained by a previous call to the GetHdc() method of this Graphics.

ReleaseHdc(IntPtr) ReleaseHdc(IntPtr) ReleaseHdc(IntPtr) ReleaseHdc(IntPtr)

Освобождает дескриптор контекста устройства, полученный в результате предыдущего вызова метода GetHdc() данного объекта Graphics.Releases a device context handle obtained by a previous call to the GetHdc() method of this Graphics.

ReleaseHdc() ReleaseHdc() ReleaseHdc() ReleaseHdc()

Освобождает дескриптор контекста устройства, полученный в результате предыдущего вызова метода GetHdc() данного объекта Graphics.Releases a device context handle obtained by a previous call to the GetHdc() method of this 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 and ReleaseHdc are two methods that allow you to get and release the handle for a Windows device. При завершении работы с маркером GetHdc Windows всегда следует выполнять вызов метода. ReleaseHdcYou should always follow a call to GetHdc with a call to ReleaseHdc when you are finished with the Windows handle.

Безопасность

SecurityPermission
для доступа к неуправляемому коду.for access to unmanaged code. Связанное перечисление: UnmanagedCode.Related enumeration: UnmanagedCode.

Дополнительно

ReleaseHdc(IntPtr) ReleaseHdc(IntPtr) ReleaseHdc(IntPtr) ReleaseHdc(IntPtr)

Освобождает дескриптор контекста устройства, полученный в результате предыдущего вызова метода GetHdc() данного объекта Graphics.Releases a device context handle obtained by a previous call to the GetHdc() method of this Graphics.

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

Параметры

hdc
IntPtr IntPtr IntPtr IntPtr

Дескриптор контекста устройства, полученный в результате предыдущего вызова метода GetHdc() данного объекта Graphics.Handle to a device context obtained by a previous call to the GetHdc() method of this Graphics.

Примеры

Следующий пример кода предназначен для использования с Windows Forms и требует PaintEventArgs e, что Paint является параметром обработчика событий.The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. В примере показан вызов функции Windows GDIGDI для выполнения той же задачи GDI+GDI+ Graphics , что и метод.The example illustrates calling a Windows GDIGDI function to perform the same task as a GDI+GDI+ Graphics method. Код выполняет следующие действия.The code performs the following actions:

  • Определяет атрибут взаимодействия DllImportAttribute для DLL-файла Windows GDI32. dll.Defines the interoperability DllImportAttribute attribute for the Windows DLL file gdi32.dll. Эта библиотека DLL содержит нужную GDIGDI функцию, которая Rectangle определяет функцию в этой библиотеке DLL как внешнюю.This DLL contains the desired GDIGDI function, and it defines the Rectangle function in that DLL as external.

  • Создает красное перо.Creates a red pen.

  • При помощи пера рисует прямоугольник на экране с помощью GDI+GDI+ DrawRectangle метода.With the pen, draws a rectangle to the screen using the GDI+GDI+ DrawRectangle method.

  • Определяет переменную hdc внутреннего типа указателя и задает для ее значения маркер контекста устройства формы.Defines an internal pointer type variable hdc and sets its value to the handle to the device context of the form.

  • Рисует прямоугольник на экране с помощью GDIGDI Rectangle функции.Draws a rectangle to the screen using the GDIGDI Rectangle function.

  • Освобождает контекст устройства, представленный hdc параметром.Releases the device context represented by the hdc parameter.

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);

[System.Security.Permissions.SecurityPermission(
System.Security.Permissions.SecurityAction.LinkDemand, Flags = 
System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)]            
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, основанную GDIGDI на, которая определяет набор графических объектов и связанных с ними атрибутов, а также графические режимы, влияющие на выходные данные.The device context is a Windows structure based on GDIGDI that defines a set of graphical objects and their associated attributes, as well as the graphical modes that affect output.

Вызовы методов ReleaseHdc и должны быть парными. GetHdcCalls to the GetHdc and ReleaseHdc methods must appear in pairs. В GetHdc рамках пары методов и ReleaseHdc , как правило, вызовы вызываются только для GDIGDI функций.During the scope of a GetHdc and ReleaseHdc method pair, you usually make calls only to GDIGDI functions. Вызовы в этой области, сделанные GDI+GDI+ для методов Graphics , вызвавших этот hdc параметр, завершаются ObjectBusy ошибкой.Calls in that scope made to GDI+GDI+ methods of the Graphics that produced the hdc parameter fail with an ObjectBusy error. Кроме того GDI+GDI+ , игнорирует любые изменения состояния, Graphics hdc внесенные в параметр в последующих операциях.Also, GDI+GDI+ ignores any state changes made to the Graphics of the hdc parameter in subsequent operations.

Безопасность

SecurityPermission
для доступа к неуправляемому коду.for access to unmanaged code. Связанное перечисление: UnmanagedCode.Related enumeration: UnmanagedCode.

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