Graphics.ReleaseHdc Método

Definição

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

Sobrecargas

ReleaseHdc()

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

ReleaseHdc(IntPtr)

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

ReleaseHdc()

Origem:
Graphics.cs
Origem:
Graphics.cs
Origem:
Graphics.cs

Libera um identificador de contexto de dispositivo obtido por uma chamada anterior ao 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 de usar o identificador do Windows.

Confira também

Aplica-se a

ReleaseHdc(IntPtr)

Origem:
Graphics.cs
Origem:
Graphics.cs
Origem:
Graphics.cs

Libera um identificador de contexto de dispositivo obtido por uma chamada anterior ao 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

Identificador para um contexto de dispositivo obtido por uma chamada anterior ao método GetHdc() desse Graphics.

Exemplos

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

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

  • Cria uma caneta vermelha.

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

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

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

  • Libera o contexto do dispositivo representado pelo hdc parâmetro .

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

Aplica-se a