Graphics.ReleaseHdc Método

Definição

Libera um identificador de contexto do dispositivo obtido por uma chamada anterior para o método GetHdc() deste Graphics.

Sobrecargas

ReleaseHdc()

Libera um identificador de contexto do dispositivo obtido por uma chamada anterior para o método GetHdc() deste Graphics.

ReleaseHdc(IntPtr)

Libera um identificador de contexto do dispositivo obtido por uma chamada anterior para o método GetHdc() deste Graphics.

ReleaseHdc()

Origem:
Graphics.cs
Origem:
Graphics.cs

Libera um identificador de contexto do dispositivo obtido por uma chamada anterior para o método GetHdc() deste Graphics.

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

Implementações

Comentários

GetHdc e ReleaseHdc são dois métodos que permitem obter e liberar o identificador de um dispositivo Windows. Você sempre deve seguir uma chamada para GetHdc com uma chamada para ReleaseHdc quando terminar com o identificador do Windows.

Confira também

Aplica-se a

ReleaseHdc(IntPtr)

Origem:
Graphics.cs
Origem:
Graphics.cs

Libera um identificador de contexto do dispositivo obtido por uma chamada anterior para o método GetHdc() deste 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

Manipule para um contexto de dispositivo obtido por uma chamada anterior para o método GetHdc() deste Graphics.

Exemplos

O exemplo de código a seguir foi projetado para uso com o Windows Forms e requer PaintEventArgse, que é um parâmetro do manipulador de eventos Paint. O exemplo ilustra a chamada de uma função GDI do Windows para executar a mesma tarefa que um método de Graphics GDI+. O código executa as seguintes ações:

  • Define o atributo DllImportAttribute de interoperabilidade para o arquivo DLL do Windows gdi32.dll. Essa DLL contém a função GDI desejada e define a função Rectangle nessa DLL como externa.

  • Cria uma caneta vermelha.

  • Com a caneta, desenha um retângulo para a tela usando o método de DrawRectangle GDI+.

  • Define uma variável de tipo de ponteiro interno hdc e define seu valor como o identificador para o contexto do dispositivo do formulário.

  • Desenha um retângulo para a tela usando a função Rectangle GDI.

  • Libera o contexto do dispositivo representado pelo 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

Comentários

O contexto do dispositivo é uma estrutura do Windows baseada em GDI que define um conjunto de objetos gráficos e seus atributos associados, bem como os modos gráficos que afetam a saída.

As chamadas para os métodos GetHdc e ReleaseHdc devem aparecer em pares. Durante o escopo de um par de métodos GetHdc e ReleaseHdc, você geralmente faz chamadas apenas para funções GDI. As chamadas nesse escopo feitas aos métodos GDI+ do Graphics que produziram o parâmetro hdc falham com um erro de ObjectBusy. Além disso, o GDI+ ignora as alterações de estado feitas no Graphics do parâmetro hdc em operações subsequentes.

Aplica-se a