Поделиться через


Graphics.FromHdc Метод

Определение

Создает новый Graphics из указанного дескриптора в контекст устройства.

Перегрузки

FromHdc(IntPtr, IntPtr)

Создает новый Graphics из указанного дескриптора в контекст устройства и дескриптор на устройство.

FromHdc(IntPtr)

Создает новый Graphics из указанного дескриптора в контекст устройства.

FromHdc(IntPtr, IntPtr)

Исходный код:
Graphics.cs
Исходный код:
Graphics.cs
Исходный код:
Graphics.cs
Исходный код:
Graphics.cs
Исходный код:
Graphics.cs

Создает новый Graphics из указанного дескриптора в контекст устройства и дескриптор на устройство.

public:
 static System::Drawing::Graphics ^ FromHdc(IntPtr hdc, IntPtr hdevice);
public static System.Drawing.Graphics FromHdc (IntPtr hdc, IntPtr hdevice);
static member FromHdc : nativeint * nativeint -> System.Drawing.Graphics
Public Shared Function FromHdc (hdc As IntPtr, hdevice As IntPtr) As Graphics

Параметры

hdc
IntPtr

nativeint

Обработка контекста устройства.

hdevice
IntPtr

nativeint

Дескриптор устройства.

Возвращаемое значение

Этот метод возвращает новый Graphics для указанного контекста устройства и устройства.

Комментарии

Для освобождения Graphics и связанных ресурсов, созданных методом FromHdc, всегда следует вызывать метод Dispose.

Даже если устройство отображения имеет связанный цветной профиль ICM, GDI+ не будет использовать этот профиль по умолчанию. Чтобы включить ICM для Graphics, создайте Graphics из HDC после передачи HDC (и ICM_ON) функции SetICMMode. Затем любой рисунок, выполненный Graphics, будет скорректирован в соответствии с профилем ICM, связанным с устройством отображения. Включение ICM приведет к снижению производительности.

Состояние контекста устройства (режим сопоставления, логическая единица и подобное) во время вызова FromHdc может повлиять на отрисовку, выполненную Graphics.

Дескриптор устройства обычно используется для запроса определенных возможностей принтера.

Применяется к

FromHdc(IntPtr)

Исходный код:
Graphics.cs
Исходный код:
Graphics.cs
Исходный код:
Graphics.cs
Исходный код:
Graphics.cs
Исходный код:
Graphics.cs

Создает новый Graphics из указанного дескриптора в контекст устройства.

public:
 static System::Drawing::Graphics ^ FromHdc(IntPtr hdc);
public static System.Drawing.Graphics FromHdc (IntPtr hdc);
static member FromHdc : nativeint -> System.Drawing.Graphics
Public Shared Function FromHdc (hdc As IntPtr) As Graphics

Параметры

hdc
IntPtr

nativeint

Обработка контекста устройства.

Возвращаемое значение

Этот метод возвращает новый Graphics для указанного контекста устройства.

Примеры

Следующий пример кода предназначен для использования с Windows Forms и требует PaintEventArgse, который является параметром обработчика событий Paint. Код выполняет следующее действие:

  • Создает внутреннюю переменную типа указателя hdc и задает его дескриптор контексту устройства графического объекта формы.

  • Создает новый графический объект с помощью hdc.

  • Рисует прямоугольник с новым графическим объектом (на экране).

  • Освобождает новый графический объект с помощью hdc.

public:
   void FromHdcHdc( PaintEventArgs^ e )
   {
      // Get handle to device context.
      IntPtr hdc = e->Graphics->GetHdc();

      // Create new graphics object using handle to device context.
      Graphics^ newGraphics = Graphics::FromHdc( hdc );

      // Draw rectangle to screen.
      newGraphics->DrawRectangle( gcnew Pen( Color::Red,3.0f ), 0, 0, 200, 100 );

      // Release handle to device context and dispose of the      // Graphics object
      e->Graphics->ReleaseHdc( hdc );
      delete newGraphics;
   }
private void FromHdcHdc(PaintEventArgs e)
{
    // Get handle to device context.
    IntPtr hdc = e.Graphics.GetHdc();

    // Create new graphics object using handle to device context.
    Graphics newGraphics = Graphics.FromHdc(hdc);

    // Draw rectangle to screen.
    newGraphics.DrawRectangle(new Pen(Color.Red, 3), 0, 0, 200, 100);

    // Release handle to device context and dispose of the      // Graphics object
    e.Graphics.ReleaseHdc(hdc);
    newGraphics.Dispose();
}
<System.Security.Permissions.SecurityPermission( _
System.Security.Permissions.SecurityAction.LinkDemand, Flags := _
System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)> _
Private Sub FromHdcHdc(ByVal e As PaintEventArgs)

    ' Get handle to device context.
    Dim hdc As IntPtr = e.Graphics.GetHdc()

    ' Create new graphics object using handle to device context.
    Dim newGraphics As Graphics = Graphics.FromHdc(hdc)

    ' Draw rectangle to screen.
    newGraphics.DrawRectangle(New Pen(Color.Red, 3), 0, 0, 200, 100)

    ' Release handle to device context and dispose of the Graphics 	' object
    e.Graphics.ReleaseHdc(hdc)
    newGraphics.Dispose()
End Sub

Комментарии

Для освобождения Graphics и связанных ресурсов, созданных методом FromHdc, всегда следует вызывать метод Dispose.

Даже если устройство отображения имеет связанный цветной профиль ICM, GDI+ не будет использовать этот профиль по умолчанию. Чтобы включить ICM для Graphics, создайте Graphics из HDC после передачи HDC (и ICM_ON) функции SetICMMode. Затем любой рисунок, выполненный Graphics, будет скорректирован в соответствии с профилем ICM, связанным с устройством отображения. Включение ICM приведет к снижению производительности.

Состояние контекста устройства (режим сопоставления, логическая единица и подобное) во время вызова FromHdc может повлиять на отрисовку, выполненную Graphics.

Применяется к