Compartir a través de


Graphics.ReleaseHdc Método

Definición

Libera un identificador de contexto de dispositivo obtenido por una llamada anterior al método GetHdc() de este Graphics.

Sobrecargas

ReleaseHdc()

Libera un identificador de contexto de dispositivo obtenido por una llamada anterior al método GetHdc() de este Graphics.

ReleaseHdc(IntPtr)

Libera un identificador de contexto de dispositivo obtenido por una llamada anterior al método GetHdc() de este Graphics.

ReleaseHdc()

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

Libera un identificador de contexto de dispositivo obtenido por una llamada anterior al método GetHdc() de este Graphics.

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

Implementaciones

Comentarios

GetHdc y ReleaseHdc son dos métodos que permiten obtener y liberar el identificador de un dispositivo Windows. Siempre debe seguir una llamada a GetHdc con una llamada a ReleaseHdc cuando haya terminado con el identificador de Windows.

Consulte también

Se aplica a

ReleaseHdc(IntPtr)

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

Libera un identificador de contexto de dispositivo obtenido por una llamada anterior al método GetHdc() de este Graphics.

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

Parámetros

hdc
IntPtr

nativeint

Identificador de un contexto de dispositivo obtenido por una llamada anterior al método GetHdc() de este Graphics.

Ejemplos

El ejemplo de código siguiente está diseñado para su uso con Windows Forms y requiere PaintEventArgse, que es un parámetro del controlador de eventos Paint. En el ejemplo se muestra cómo llamar a una función GDI de Windows para realizar la misma tarea que un método Graphics GDI+. El código realiza las siguientes acciones:

  • Define el atributo DllImportAttribute de interoperabilidad para el archivo DLL de Windows gdi32.dll. Este archivo DLL contiene la función GDI deseada y define la función Rectangle en ese archivo DLL como externo.

  • Crea un lápiz rojo.

  • Con el lápiz, dibuja un rectángulo en la pantalla mediante el método DrawRectangle GDI+.

  • Define una variable de tipo de puntero interno hdc y establece su valor en el identificador para el contexto del dispositivo del formulario.

  • Dibuja un rectángulo en la pantalla mediante la función Rectangle GDI.

  • Libera el contexto del dispositivo representado por el parámetro 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

Comentarios

El contexto del dispositivo es una estructura de Windows basada en GDI que define un conjunto de objetos gráficos y sus atributos asociados, así como los modos gráficos que afectan a la salida.

Las llamadas a los métodos GetHdc y ReleaseHdc deben aparecer en pares. Durante el ámbito de un par de métodos GetHdc y ReleaseHdc, normalmente solo se realizan llamadas a funciones GDI. Las llamadas realizadas en ese ámbito a los métodos de GDI+ de la Graphics que produjo el parámetro hdc producen un error de ObjectBusy. Además, GDI+ omite los cambios de estado realizados en el Graphics del parámetro hdc en las operaciones posteriores.

Se aplica a