Share via


Graphics.ReleaseHdc Yöntem

Tanım

Bu Graphicsyönteminin önceki bir çağrısı GetHdc() tarafından alınan bir cihaz bağlam tutamacını serbest bırakır.

Aşırı Yüklemeler

ReleaseHdc()

Bu Graphicsyönteminin önceki bir çağrısı GetHdc() tarafından alınan bir cihaz bağlam tutamacını serbest bırakır.

ReleaseHdc(IntPtr)

Bu Graphicsyönteminin önceki bir çağrısı GetHdc() tarafından alınan bir cihaz bağlam tutamacını serbest bırakır.

ReleaseHdc()

Kaynak:
Graphics.cs
Kaynak:
Graphics.cs
Kaynak:
Graphics.cs

Bu Graphicsyönteminin önceki bir çağrısı GetHdc() tarafından alınan bir cihaz bağlam tutamacını serbest bırakır.

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

Uygulamalar

Açıklamalar

GetHdc ve ReleaseHdc bir Windows cihazının tutamacını almanıza ve serbest bırakmanıza olanak sağlayan iki yöntemdir. Windows tanıtıcısıyla işiniz bittiğinde her zaman çağrısıyla ReleaseHdc çağrısına uymanız GetHdc gerekir.

Ayrıca bkz.

Şunlara uygulanır

ReleaseHdc(IntPtr)

Kaynak:
Graphics.cs
Kaynak:
Graphics.cs
Kaynak:
Graphics.cs

Bu Graphicsyönteminin önceki bir çağrısı GetHdc() tarafından alınan bir cihaz bağlam tutamacını serbest bırakır.

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

Parametreler

hdc
IntPtr

nativeint

Bu Graphicsyönteminin önceki bir çağrısı tarafından alınan bir cihaz bağlamını GetHdc() işle.

Örnekler

Aşağıdaki kod örneği, Windows Forms ile kullanılmak üzere tasarlanmıştır ve olay işleyicisinin Paint bir parametresi olan gerektirir.PaintEventArgse Örnekte, bir GDI+ Graphics yöntemiyle aynı görevi gerçekleştirmek için Bir Windows GDI işlevini çağırma gösterilmektedir. Kod aşağıdaki eylemleri gerçekleştirir:

  • Windows DLL dosyası gdi32.dll için birlikte çalışabilirlik DllImportAttribute özniteliğini tanımlar. Bu DLL istenen GDI işlevini içerir ve bu DLL'deki işlevi dış olarak tanımlar Rectangle .

  • Kırmızı kalem oluşturur.

  • Kalemle, GDI+ DrawRectangle yöntemini kullanarak ekrana bir dikdörtgen çizer.

  • bir iç işaretçi türü değişkeni hdc tanımlar ve değerini formun cihaz bağlamı için tanıtıcıya ayarlar.

  • GDI Rectangle işlevini kullanarak ekrana bir dikdörtgen çizer.

  • parametresi tarafından temsil edilen cihaz bağlamını hdc serbest bırakır.

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

Açıklamalar

Cihaz bağlamı, GDI tabanlı bir Windows yapısıdır ve bir dizi grafik nesnesini ve bunların ilişkili özniteliklerini ve çıkışı etkileyen grafik modlarını tanımlar.

ve ReleaseHdc yöntemlerine yapılan GetHdc çağrılar çiftler halinde görünmelidir. Bir GetHdc ve ReleaseHdc yöntem çiftinin kapsamı sırasında genellikle yalnızca GDI işlevlerine çağrı yaparsınız. Parametreyi oluşturan GDI+ yöntemlerine yapılan bu kapsamdaki hdc çağrılar Graphics bir ObjectBusy hatayla başarısız olur. Ayrıca GDI+, sonraki işlemlerde parametresinde Graphicshdc yapılan durum değişikliklerini yoksayar.

Şunlara uygulanır