Graphics.ReleaseHdc Método

Definição

Liberta um handle de contexto do dispositivo obtido por uma chamada anterior ao GetHdc() método deste Graphics.

Sobrecargas

Name Description
ReleaseHdc()

Liberta um handle de contexto do dispositivo obtido por uma chamada anterior ao GetHdc() método deste Graphics.

ReleaseHdc(IntPtr)

Liberta um handle de contexto do dispositivo obtido por uma chamada anterior ao GetHdc() método deste Graphics.

ReleaseHdc()

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

Liberta um handle de contexto do dispositivo obtido por uma chamada anterior ao GetHdc() método deste Graphics.

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

Implementações

Observações

GetHdc e ReleaseHdc são dois métodos que permitem obter e soltar a pega de um dispositivo Windows. Deves sempre seguir uma chamada para GetHdc com uma chamada para ReleaseHdc quando terminares com a alavanca Windows.

Ver também

Aplica-se a

ReleaseHdc(IntPtr)

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

Liberta um handle de contexto do dispositivo obtido por uma chamada anterior ao GetHdc() método 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

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

Exemplos

O seguinte exemplo de código foi concebido para uso com Windows Forms e requer PaintEventArgse, que é um parâmetro do tratador de eventos Paint. O exemplo ilustra a chamada de uma função Windows GDI para realizar 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 ficheiro DLL Windows gdi32.dll. Esta 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 o ecrã usando o método GDI+ DrawRectangle .

  • Define uma variável hdc interna do tipo ponteiro e define o seu valor para o handle no contexto do dispositivo da forma.

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

  • Liberta 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

Observações

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

As chamadas para os GetHdc métodos e ReleaseHdc devem aparecer em pares. Durante o âmbito de um GetHdc par e ReleaseHdc método, normalmente faz-se chamadas apenas para funções GDI. Chamadas nesse âmbito feitas para métodos GDI+ do Graphics que produziram o hdc parâmetro falham com um ObjectBusy erro. Além disso, o GDI+ ignora quaisquer alterações de estado feitas ao Graphics do hdc parâmetro em operações subsequentes.

Aplica-se a