Контексты устройствDevice Contexts
Контекст устройства — это структура данных Windows, содержащая сведения об атрибутах рисования устройства, таких как экран или принтер.A device context is a Windows data structure containing information about the drawing attributes of a device such as a display or a printer. Все вызовы рисования выполняются через объект контекста устройства, который инкапсулирует интерфейсы API Windows для рисования линий, фигур и текста.All drawing calls are made through a device-context object, which encapsulates the Windows APIs for drawing lines, shapes, and text. Контексты устройств допускают независящие от устройства рисунки в Windows.Device contexts allow device-independent drawing in Windows. Контексты устройств можно использовать для рисования на экране, на принтер или в метафайл.Device contexts can be used to draw to the screen, to the printer, or to a metafile.
Объекты кпаинтдк инкапсулируют общую идиому окон, вызывая BeginPaint
функцию, затем рисуя в контексте устройства и вызывая EndPaint
функцию.CPaintDC objects encapsulate the common idiom of Windows, calling the BeginPaint
function, then drawing in the device context, then calling the EndPaint
function. CPaintDC
Конструктор вызывает метод BeginPaint
, и деструктор вызывает EndPaint
.The CPaintDC
constructor calls BeginPaint
for you, and the destructor calls EndPaint
. Упрощенный процесс — создание объекта CDC , рисование, а затем уничтожение CDC
объекта.The simplified process is to create the CDC object, draw, and then destroy the CDC
object. В платформе большая часть даже этого процесса автоматизирована.In the framework, much of even this process is automated. В частности, OnDraw
функция передается CPaintDC
уже подготовленным (через OnPrepareDC
), и вы просто рисуете в ней.In particular, your OnDraw
function is passed a CPaintDC
already prepared (via OnPrepareDC
), and you simply draw into it. Он уничтожается платформой, и контекст базового устройства освобождается в Windows после возврата из вызова OnDraw
функции.It is destroyed by the framework and the underlying device context is released to Windows upon return from the call to your OnDraw
function.
Объекты кклиентдк инкапсулируют работу с контекстом устройства, представляющим только клиентскую область окна.CClientDC objects encapsulate working with a device context that represents only the client area of a window. CClientDC
Конструктор вызывает GetDC
функцию, и деструктор вызывает ReleaseDC
функцию.The CClientDC
constructor calls the GetDC
function, and the destructor calls the ReleaseDC
function. Объекты квиндовдк инкапсулируют контекст устройства, представляющий все окно, включая его фрейм.CWindowDC objects encapsulate a device context that represents the whole window, including its frame.
Кметафиледк объекты инкапсулируют рисунок в метафайл Windows.CMetaFileDC objects encapsulate drawing into a Windows metafile. В отличие от CPaintDC
переданного OnDraw
метода, необходимо в этом случае вызвать онпрепаредк самостоятельно.In contrast to the CPaintDC
passed to OnDraw
, you must in this case call OnPrepareDC yourself.
Рисование мышиMouse Drawing
Большинство операций рисования в программе платформы, и, таким, в большинстве случаев работы с контекстом устройства, выполняются в OnDraw
функции-члене представления.Most drawing in a framework program — and thus most device-context work — is done in the view's OnDraw
member function. Тем не менее вы по-прежнему можете использовать объекты контекста устройства для других целей.However, you can still use device-context objects for other purposes. Например, чтобы обеспечить обратную отправку для отслеживания перемещения мыши в представлении, необходимо нарисовать непосредственно в представлении, не дожидаясь OnDraw
вызова.For example, to provide tracking feedback for mouse movement in a view, you need to draw directly into the view without waiting for OnDraw
to be called.
В этом случае можно использовать объект контекста устройства кклиентдк для рисования непосредственно в представлении.In such a case, you can use a CClientDC device-context object to draw directly into the view.
Что вы хотите узнать подробнееWhat do you want to know more about
Контексты устройств (определение)Device contexts (definition)
Анализ вводимых пользователем данных через представлениеInterpreting User Input Through a View
Координатные пространства и преобразованияCoordinate spaces and transformations