Graphics.ReleaseHdc Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
ReleaseHdc() |
Освобождает дескриптор контекста устройства, полученный предыдущим вызовом метода GetHdc() этого Graphics. |
ReleaseHdc(IntPtr) |
Освобождает дескриптор контекста устройства, полученный предыдущим вызовом метода GetHdc() этого Graphics. |
ReleaseHdc()
- Исходный код:
- Graphics.cs
- Исходный код:
- Graphics.cs
public:
virtual void ReleaseHdc();
public void ReleaseHdc ();
abstract member ReleaseHdc : unit -> unit
override this.ReleaseHdc : unit -> unit
Public Sub ReleaseHdc ()
Реализации
Комментарии
GetHdc и ReleaseHdc — это два метода, которые позволяют получить и освободить дескриптор для устройства Windows. Вы всегда должны следовать вызову GetHdc с вызовом ReleaseHdc, когда вы закончите работу с дескриптором Windows.
См. также раздел
Применяется к
ReleaseHdc(IntPtr)
- Исходный код:
- Graphics.cs
- Исходный код:
- Graphics.cs
public:
void ReleaseHdc(IntPtr hdc);
public void ReleaseHdc (IntPtr hdc);
member this.ReleaseHdc : nativeint -> unit
Public Sub ReleaseHdc (hdc As IntPtr)
Параметры
- hdc
-
IntPtr
nativeint
Обработка контекста устройства, полученного предыдущим вызовом метода GetHdc() этого Graphics.
Примеры
Следующий пример кода предназначен для использования с Windows Forms и требует PaintEventArgse
, который является параметром обработчика событий Paint. В примере показан вызов функции GDI Windows для выполнения той же задачи, что и метод GDI+ Graphics. Код выполняет следующие действия:
Определяет атрибут DllImportAttribute взаимодействия для gdi32.dllDLL-файла Windows. Эта библиотека DLL содержит нужную функцию GDI и определяет функцию Rectangle в этой библиотеке DLL как внешнюю.
Создает красное перо.
С помощью пера рисует прямоугольник на экран с помощью метода GDI+ DrawRectangle.
Определяет внутреннюю переменную типа указателя
hdc
и задает его значение дескриптору контексту устройства формы.Рисует прямоугольник на экран с помощью функции GDI Rectangle.
Освобождает контекст устройства, представленный параметром
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
Комментарии
Контекст устройства — это структура Windows на основе GDI, которая определяет набор графических объектов и их связанных атрибутов, а также графические режимы, влияющие на выходные данные.
Вызовы методов GetHdc и ReleaseHdc должны отображаться в парах. В области пары методов GetHdc и ReleaseHdc обычно выполняются вызовы только к функциям GDI. Вызовы в этой области, сделанные в методы GDI+ Graphics, которые вызвали сбой параметра hdc
с ошибкой ObjectBusy
. Кроме того, GDI+ игнорирует любые изменения состояния, внесенные в Graphics параметра hdc
в последующих операциях.