Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Класс
Определяет класс объектов контекста устройства.
Syntax
class CDC : public CObject
Members
Public Constructors
| Name | Description |
|---|---|
CDC::CDC |
Формирует объект CDC. |
Public Methods
| Name | Description |
|---|---|
CDC::AbortDoc |
Завершает текущее задание печати, стирая все приложение, записанное на устройство с момента последнего вызова StartDoc функции-члена. |
CDC::AbortPath |
Закрывает и удаляет все пути в контексте устройства. |
CDC::AddMetaFileComment |
Копирует комментарий из буфера в указанный метафайл расширенного формата. |
CDC::AlphaBlend |
Отображает растровые изображения с прозрачными или полутранспарентными пикселями. |
CDC::AngleArc |
Рисует сегмент линии и дугу и перемещает текущую позицию в конечную точку дуги. |
CDC::Arc |
Рисует эллиптическую дугу. |
CDC::ArcTo |
Рисует эллиптическую дугу. Эта функция аналогична Arc, за исключением того, что текущая позиция обновляется. |
CDC::Attach |
Присоединяет контекст устройства Windows к этому CDC объекту. |
CDC::BeginPath |
Открывает скобку пути в контексте устройства. |
CDC::BitBlt |
Копирует растровое изображение из указанного контекста устройства. |
CDC::Chord |
Рисует аккорд (закрытая фигура, ограничивающая пересечением многоточия и сегмента линии). |
CDC::CloseFigure |
Закрывает открытую фигуру в пути. |
CDC::CreateCompatibleDC |
Создает контекст устройства памяти, совместимый с другим контекстом устройства. Его можно использовать для подготовки изображений в памяти. |
CDC::CreateDC |
Создает контекст устройства для определенного устройства. |
CDC::CreateIC |
Создает контекст сведений для определенного устройства. Это обеспечивает быстрый способ получения сведений об устройстве без создания контекста устройства. |
CDC::DeleteDC |
Удаляет контекст устройства Windows, связанный с этим CDC объектом. |
CDC::DeleteTempMap |
Вызывается обработчиком CWinApp времени простоя, чтобы удалить любой временный CDC объект, созданный с помощью FromHandle. Кроме того, отсоединяет контекст устройства. |
CDC::Detach |
Отсоединяет контекст устройства Windows от этого CDC объекта. |
CDC::DPtoHIMETRIC |
Преобразует единицы устройства в HIMETRIC единицы. |
CDC::DPtoLP |
Преобразует единицы устройства в логические единицы. |
CDC::Draw3dRect |
Рисует трехмерный прямоугольник. |
CDC::DrawDragRect |
Удаляет и перерисовывает прямоугольник, как он перетаскивается. |
CDC::DrawEdge |
Рисует края прямоугольника. |
CDC::DrawEscape |
Обращается к возможностям рисования видеотрансляции, которые не доступны напрямую через интерфейс графического устройства (GDI). |
CDC::DrawFocusRect |
Рисует прямоугольник в стиле, используемом для указания фокуса. |
CDC::DrawFrameControl |
Рисование элемента управления кадром. |
CDC::DrawIcon |
Рисует значок. |
CDC::DrawState |
Отображает изображение и применяет визуальный эффект для указания состояния. |
CDC::DrawText |
Рисует форматированный текст в указанном прямоугольнике. |
CDC::DrawTextEx |
Рисует форматированный текст в указанном прямоугольнике с помощью других форматов. |
CDC::Ellipse |
Рисование эллипса. |
CDC::EndDoc |
Завершает задание печати, запущенное функцией-членом StartDoc . |
CDC::EndPage |
Сообщает драйверу устройства о завершении страницы. |
CDC::EndPath |
Закрывает скобку пути и выбирает путь, определенный скобкой в контексте устройства. |
CDC::EnumObjects |
Перечисляет ручки и кисти, доступные в контексте устройства. |
CDC::Escape |
Позволяет приложениям получать доступ к объектам, которые не доступны напрямую с определенного устройства через GDI. Кроме того, разрешает доступ к функциям escape-сервера Windows. Escape-вызовы, выполняемые приложением, претворяются и отправляются драйверу устройства. |
CDC::ExcludeClipRect |
Создает новый регион вырезки, состоящий из существующей области вырезки минус указанный прямоугольник. |
CDC::ExcludeUpdateRgn |
Запрещает рисование в недопустимых областях окна, исключая обновленный регион в окне из области вырезки. |
CDC::ExtFloodFill |
Заполняет область текущей кистью. Обеспечивает большую CDC::FloodFill гибкость, чем функция-член. |
CDC::ExtTextOut |
Записывает символьную строку в прямоугольную область с помощью выбранного в данный момент шрифта. |
CDC::FillPath |
Закрывает все открытые фигуры в текущем пути и заполняет интерьер пути с помощью текущего режима заполнения кисти и многоугольника. |
CDC::FillRect |
Заполняет заданный прямоугольник с помощью определенной кисти. |
CDC::FillRgn |
Заполняет определенный регион указанной кистью. |
CDC::FillSolidRect |
Заполняет прямоугольник сплошным цветом. |
CDC::FlattenPath |
Преобразует все кривые в пути, выбранном в текущем контексте устройства, и преобразует каждую кривую в последовательность строк. |
CDC::FloodFill |
Заполняет область текущей кистью. |
CDC::FrameRect |
Рисует границу вокруг прямоугольника. |
CDC::FrameRgn |
Рисует границу вокруг определенного региона с помощью кисти. |
CDC::FromHandle |
Возвращает указатель на CDC объект при указании дескриптора контекста устройства.
CDC Если объект не присоединен к дескриптору, создается и присоединяется временный CDC объект. |
CDC::GetArcDirection |
Возвращает текущее направление дуги для контекста устройства. |
CDC::GetAspectRatioFilter |
Извлекает параметр для текущего фильтра пропорций. |
CDC::GetBkColor |
Извлекает текущий цвет фона. |
CDC::GetBkMode |
Извлекает фоновый режим. |
CDC::GetBoundsRect |
Возвращает текущий накопленный ограничивающий прямоугольник для указанного контекста устройства. |
CDC::GetBrushOrg |
Извлекает источник текущей кисти. |
CDC::GetCharABCWidths |
Извлекает ширину в логических единицах последовательных символов в заданном диапазоне от текущего шрифта. |
CDC::GetCharABCWidthsI |
Извлекает ширину в логических единицах последовательных индексов глифов в указанном диапазоне от текущего шрифта TrueType. |
CDC::GetCharacterPlacement |
Извлекает различные типы сведений о строке символов. |
CDC::GetCharWidth |
Извлекает дробную ширину последовательных символов в заданном диапазоне от текущего шрифта. |
CDC::GetCharWidthI |
Извлекает ширину в логических координатах последовательных индексов глифов в указанном диапазоне от текущего шрифта. |
CDC::GetClipBox |
Извлекает размеры жестко ограничивающего прямоугольника вокруг текущей границы обрезки. |
CDC::GetColorAdjustment |
Извлекает значения корректировки цвета для контекста устройства. |
CDC::GetCurrentBitmap |
Возвращает указатель на текущий выбранный CBitmap объект. |
CDC::GetCurrentBrush |
Возвращает указатель на текущий выбранный CBrush объект. |
CDC::GetCurrentFont |
Возвращает указатель на текущий выбранный CFont объект. |
CDC::GetCurrentPalette |
Возвращает указатель на текущий выбранный CPalette объект. |
CDC::GetCurrentPen |
Возвращает указатель на текущий выбранный CPen объект. |
CDC::GetCurrentPosition |
Извлекает текущую позицию пера (в логических координатах). |
CDC::GetDCBrushColor |
Получает текущий цвет кисти. |
CDC::GetDCPenColor |
Получает текущий цвет пера. |
CDC::GetDeviceCaps |
Извлекает указанный тип сведений о возможностях устройства отображения. |
CDC::GetFontData |
Извлекает данные метрик шрифта из масштабируемого файла шрифта. Извлекаемая информация определяется путем указания смещения в файл шрифта и длины возвращаемой информации. |
CDC::GetFontLanguageInfo |
Возвращает сведения о выбранном шрифте для указанного контекста отображения. |
CDC::GetGlyphOutline |
Извлекает кривую контура или растровое изображение для символа структуры в текущем шрифте. |
CDC::GetGraphicsMode |
Извлекает текущий графический режим для указанного контекста устройства. |
CDC::GetHalftoneBrush |
Извлекает полутонную кисть. |
CDC::GetKerningPairs |
Извлекает пары кернинга символов для шрифта, выбранного в текущем контексте устройства. |
CDC::GetLayout |
Извлекает макет контекста устройства (DC). Макет может быть слева направо (по умолчанию) или справа налево (зеркально). |
CDC::GetMapMode |
Извлекает текущий режим сопоставления. |
CDC::GetMiterLimit |
Возвращает ограничение митер для контекста устройства. |
CDC::GetNearestColor |
Извлекает ближайший логический цвет к указанному логическому цвету, который может представлять данное устройство. |
CDC::GetOutlineTextMetrics |
Извлекает сведения о метриках шрифта для шрифтов TrueType. |
CDC::GetOutputCharWidth |
Извлекает ширину отдельных символов в последовательной группе символов из текущего шрифта с помощью контекста выходного устройства. |
CDC::GetOutputTabbedTextExtent |
Вычисляет ширину и высоту символьной строки в контексте выходного устройства. |
CDC::GetOutputTextExtent |
Вычисляет ширину и высоту строки текста в контексте выходного устройства с помощью текущего шрифта для определения измерений. |
CDC::GetOutputTextMetrics |
Извлекает метрики текущего шрифта из контекста выходного устройства. |
CDC::GetPath |
Извлекает координаты, определяющие конечные точки линий и контрольные точки кривых, найденных в пути, выбранном в контексте устройства. |
CDC::GetPixel |
Извлекает значение цвета RGB пикселя в указанной точке. |
CDC::GetPolyFillMode |
Извлекает текущий режим заполнения многоугольников. |
CDC::GetROP2 |
Извлекает текущий режим рисования. |
CDC::GetSafeHdc |
Возвращает CDC::m_hDCконтекст выходного устройства. |
CDC::GetStretchBltMode |
Извлекает текущий режим растягивания растровых изображений. |
CDC::GetTabbedTextExtent |
Вычисляет ширину и высоту символьной строки в контексте устройства атрибута. |
CDC::GetTextAlign |
Извлекает флаги выравнивания текста. |
CDC::GetTextCharacterExtra |
Извлекает текущий параметр для количества интервалов между диаграммами. |
CDC::GetTextColor |
Извлекает текущий цвет текста. |
CDC::GetTextExtent |
Вычисляет ширину и высоту строки текста в контексте устройства атрибута с помощью текущего шрифта для определения измерений. |
CDC::GetTextExtentExPointI |
Извлекает количество символов в указанной строке, которая будет соответствовать заданному пространству и заполняет массив экстентом текста для каждого из этих символов. |
CDC::GetTextExtentPointI |
Извлекает ширину и высоту указанного массива глифовых индексов. |
CDC::GetTextFace |
Копирует имя шрифта текущего шрифта в буфер в виде строки, завершаемой значением NULL. |
CDC::GetTextMetrics |
Извлекает метрики текущего шрифта из контекста устройства атрибута. |
CDC::GetViewportExt |
Извлекает x-и y-экстенты окна просмотра. |
CDC::GetViewportOrg |
Извлекает координаты x-и y источника окна просмотра. |
CDC::GetWindow |
Возвращает окно, связанное с контекстом устройства отображения. |
CDC::GetWindowExt |
Извлекает x-и y-экстенты связанного окна. |
CDC::GetWindowOrg |
Извлекает координаты x-и y источника связанного окна. |
CDC::GetWorldTransform |
Извлекает текущее преобразование пространства мира в пространство страницы. |
CDC::GradientFill |
Заполняет прямоугольники и треугольники структурами с цветом градации. |
CDC::GrayString |
Рисует неактивный (серый) текст в заданном расположении. |
CDC::HIMETRICtoDP |
Преобразует единицы HIMETRIC в единицы устройства. |
CDC::HIMETRICtoLP |
Преобразует единицы HIMETRIC в логические единицы. |
CDC::IntersectClipRect |
Создает новую область вырезки, формируя пересечение текущего региона и прямоугольника. |
CDC::InvertRect |
Инвертирует содержимое прямоугольника. |
CDC::InvertRgn |
Инвертирует цвета в регионе. |
CDC::IsPrinting |
Определяет, используется ли контекст устройства для печати. |
CDC::LineTo |
Рисует линию от текущей позиции до, но не включая точку. |
CDC::LPtoDP |
Преобразует логические единицы в единицы устройства. |
CDC::LPtoHIMETRIC |
Преобразует логические единицы в единицы HIMETRIC. |
CDC::MaskBlt |
Объединяет данные цвета для исходных и целевых растровых изображений с помощью заданной операции маски и растра. |
CDC::ModifyWorldTransform |
Изменяет преобразование мира для контекста устройства с помощью указанного режима. |
CDC::MoveTo |
Перемещает текущую позицию. |
CDC::OffsetClipRgn |
Перемещает область вырезки заданного устройства. |
CDC::OffsetViewportOrg |
Изменяет источник окна просмотра относительно координат текущего источника представления. |
CDC::OffsetWindowOrg |
Изменяет источник окна относительно координат текущего источника окна. |
CDC::PaintRgn |
Заполняет область выбранной кистью. |
CDC::PatBlt |
Создает битовый шаблон. |
CDC::Pie |
Рисует кругообразную клину. |
CDC::PlayMetaFile |
Воспроизводит содержимое указанного метафайла на данном устройстве. Расширенная версия PlayMetaFile отображает рисунок, хранящийся в заданном метафайле расширенного формата. Метафайл можно воспроизводить любое количество раз. |
CDC::PlgBlt |
Выполняет передачу битов цветовых данных из указанного прямоугольника в контексте исходного устройства на указанную параллелограмму в заданном контексте устройства. |
CDC::PolyBezier |
Рисует одну или несколько сплайнов Bzier. Текущая позиция не используется или не обновляется. |
CDC::PolyBezierTo |
Рисует одну или несколько сплайнов Bzier и перемещает текущую позицию в конечную точку последнего сплайна Bzier. |
CDC::PolyDraw |
Рисует набор сегментов линий и сплайнов Bzier. Эта функция обновляет текущую позицию. |
CDC::Polygon |
Рисует многоугольник, состоящий из двух или более точек (вершин), соединенных линиями. |
CDC::Polyline |
Рисует набор сегментов линий, соединяющих указанные точки. |
CDC::PolylineTo |
Рисует одну или несколько прямых линий и перемещает текущую позицию в конечную точку последней строки. |
CDC::PolyPolygon |
Создает два или более многоугольников, заполненных с помощью текущего режима заполнения многоугольников. Многоугольники могут быть развязаны или могут перекрываться. |
CDC::PolyPolyline |
Рисует несколько рядов сегментов подключенной линии. Текущая позиция не используется или обновляется этой функцией. |
CDC::PtVisible |
Указывает, находится ли указанная точка в регионе вырезки. |
CDC::RealizePalette |
Сопоставляет записи палитры в текущей логической палитре с системной палитрой. |
CDC::Rectangle |
Рисует прямоугольник с помощью текущего пера и заполняет его с помощью текущей кисти. |
CDC::RectVisible |
Определяет, находится ли любая часть заданного прямоугольника в области вырезки. |
CDC::ReleaseAttribDC |
Выпуски m_hAttribDC, контекст устройства атрибута. |
CDC::ReleaseOutputDC |
Выпуски m_hDC, контекст выходного устройства. |
CDC::ResetDC |
m_hAttribDC Обновляет контекст устройства. |
CDC::RestoreDC |
Восстанавливает контекст устройства до предыдущего состояния, сохраненного с SaveDCпомощью . |
CDC::RoundRect |
Рисует прямоугольник с закругленными углами с помощью текущего пера и заполняется с помощью текущей кисти. |
CDC::SaveDC |
Сохраняет текущее состояние контекста устройства. |
CDC::ScaleViewportExt |
Изменяет степень окна просмотра относительно текущих значений. |
CDC::ScaleWindowExt |
Изменяет экстенты окна относительно текущих значений. |
CDC::ScrollDC |
Прокручивает прямоугольник битов по горизонтали и по вертикали. |
CDC::SelectClipPath |
Выбирает текущий путь в качестве области вырезки для контекста устройства, сочетая новый регион с любым существующим регионом вырезки с помощью указанного режима. |
CDC::SelectClipRgn |
Объединяет заданный регион с текущим регионом вырезки с помощью указанного режима. |
CDC::SelectObject |
Выбирает объект рисования GDI, например перо. |
CDC::SelectPalette |
Выбирает логическую палитру. |
CDC::SelectStockObject |
Выбирает один из предопределенных стандартных перьев, кистей или шрифтов, предоставляемых Windows. |
CDC::SetAbortProc |
Задает функцию обратного вызова, предоставляемую программистом, которая вызываетСя Windows, если задание печати должно быть прервано. |
CDC::SetArcDirection |
Задает направление рисования, которое будет использоваться для функций дуги и прямоугольника. |
CDC::SetAttribDC |
Задает m_hAttribDC, контекст устройства атрибута. |
CDC::SetBkColor |
Задает текущий цвет фона. |
CDC::SetBkMode |
Задает фоновый режим. |
CDC::SetBoundsRect |
Управляет накоплением ограничивающих прямоугольников для указанного контекста устройства. |
CDC::SetBrushOrg |
Указывает источник для следующей кисти, выбранной в контексте устройства. |
CDC::SetColorAdjustment |
Задает значения корректировки цвета для контекста устройства с помощью указанных значений. |
CDC::SetDCBrushColor |
Задает текущий цвет кисти. |
CDC::SetDCPenColor |
Задает текущий цвет пера. |
CDC::SetGraphicsMode |
Задает текущий графический режим для указанного контекста устройства. |
CDC::SetLayout |
Изменяет макет контекста устройства (DC). |
CDC::SetMapMode |
Задает текущий режим сопоставления. |
CDC::SetMapperFlags |
Изменяет алгоритм, который средство сопоставления шрифтов использует при сопоставлении логических шрифтов с физическими шрифтами. |
CDC::SetMiterLimit |
Задает ограничение длины соединений miter для контекста устройства. |
CDC::SetOutputDC |
Задает m_hDCконтекст выходного устройства. |
CDC::SetPixel |
Задает пиксель в указанной точке в ближайшее приближение указанного цвета. |
CDC::SetPixelV |
Задает пиксель в указанных координатах ближайшим приближением указанного цвета.
SetPixelV быстрее, чем SetPixel из-за того, что он не должен возвращать значение цвета окрашенной точки. |
CDC::SetPolyFillMode |
Задает режим многоугольника. |
CDC::SetROP2 |
Задает текущий режим рисования. |
CDC::SetStretchBltMode |
Задает режим растягивания растровых изображений. |
CDC::SetTextAlign |
Задает флаги выравнивания текста. |
CDC::SetTextCharacterExtra |
Задает количество интервалов между диаграммами. |
CDC::SetTextColor |
Задает цвет текста. |
CDC::SetTextJustification |
Добавляет пробел в символы останова в строке. |
CDC::SetViewportExt |
Задает x-и y-экстенты окна просмотра. |
CDC::SetViewportOrg |
Задает источник окна просмотра. |
CDC::SetWindowExt |
Задает x-и y-экстенты связанного окна. |
CDC::SetWindowOrg |
Задает источник окна контекста устройства. |
CDC::SetWorldTransform |
Задает текущее преобразование пространства мира на страницу. |
CDC::StartDoc |
Сообщает драйверу устройства, что запускается новое задание печати. |
CDC::StartPage |
Сообщает драйверу устройства, что начинается новая страница. |
CDC::StretchBlt |
Перемещает растровое изображение из исходного прямоугольника и устройства в целевой прямоугольник, растягивание или сжатие растрового рисунка при необходимости, чтобы соответствовать измерениям целевого прямоугольника. |
CDC::StrokeAndFillPath |
Закрывает все открытые фигуры в пути, ударяет контур пути с помощью текущего пера и заполняет его интерьер с помощью текущей кисти. |
CDC::StrokePath |
Отрисовывает указанный путь с помощью текущего пера. |
CDC::TabbedTextOut |
Записывает символьную строку в указанном расположении, расширяя вкладки до значений, указанных в массиве позиций табуляции. |
CDC::TextOut |
Записывает символьную строку в указанном расположении с помощью выбранного в данный момент шрифта. |
CDC::TransparentBlt |
Передает битовый блок данных цвета из указанного контекста исходного устройства в контекст целевого устройства, отрисовка указанного цвета прозрачной в передаче. |
CDC::UpdateColors |
Обновляет клиентская область контекста устройства, сопоставляя текущие цвета в клиентской области с системной палитрой на основе пикселей по пикселям. |
CDC::WidenPath |
Переопределяет текущий путь в качестве области, которая будет окрашена, если путь был обрисован с помощью пера, выбранного в данный момент в контексте устройства. |
Public Operators
| Name | Description |
|---|---|
CDC::operator HDC |
Извлекает дескриптор контекста устройства. |
Открытые члены данных
| Name | Description |
|---|---|
CDC::m_hAttribDC |
Контекст атрибута устройства, используемый этим CDC объектом. |
CDC::m_hDC |
Контекст выходного устройства, используемый этим CDC объектом. |
Remarks
Объект CDC предоставляет функции-члены для работы с контекстом устройства, например с дисплеем или принтером, и членами для работы с контекстом отображения, связанным с клиентской областью окна.
Выполните все рисование через функции-члены CDC объекта. Класс предоставляет функции-члены для операций с контекстом устройства, работа с инструментами рисования, выбором объектов GDI и использованием цветов и палитр. Он также предоставляет функции-члены для получения и настройки атрибутов рисования, сопоставления, работы с окном, работы с экстентом окна, преобразования координат, работы с регионами, вырезки, линий рисования и рисования простых фигур, многоточия и многоугольников. Функции-члены также предоставляются для рисования текста, работы с шрифтами, использования экранов принтера, прокрутки и воспроизведения метафайлов.
Чтобы использовать CDC объект, создайте его, а затем вызовите его функции-члены, которые параллельные функции Windows, использующие контексты устройств.
Note
В Windows 95/98 все координаты экрана ограничены 16 битами. Таким образом, передаваемая intCDC в функцию-член, должна находиться в диапазоне от -32768 до 32767.
Для конкретных использования библиотека классов Microsoft Foundation предоставляет несколько классов, производных от CDC .
CPaintDC инкапсулирует вызовы BeginPaint и EndPaint.
CClientDC управляет контекстом отображения, связанным с клиентской областью окна.
CWindowDC управляет контекстом отображения, связанным со всем окном, включая его кадр и элементы управления.
CMetaFileDC связывает контекст устройства с метафайлом.
CDC предоставляет две функции-члены GetLayout и SetLayoutдля восстановления макета контекста устройства, который не наследует его макет из окна. Такая ориентация справа налево необходима для приложений, написанных для культур, таких как арабский или иврит, где макет символа не является европейским стандартом.
CDCсодержит два контекста m_hDCm_hAttribDC устройства и CDC, который при создании объекта ссылается на одно и то же устройство.
CDC направляет все выходные вызовы GDI и m_hDC большинство вызовов m_hAttribDCGDI атрибутов. (Пример вызова атрибута — GetTextColorэто SetTextColor вызов выходных данных.)
Например, платформа использует эти два контекста устройства для реализации CMetaFileDC объекта, который будет отправлять выходные данные в метафайл при чтении атрибутов с физического устройства. Предварительная версия печати реализована в платформе аналогичным образом. Вы также можете использовать два контекста устройства аналогичным образом в коде для конкретного приложения.
Иногда могут потребоваться текстовые метрики из m_hDCm_hAttribDC контекстов устройств. Следующие пары функций обеспечивают эту возможность:
| Uses m_hAttribDC | Uses m_hDC |
|---|---|
GetTextExtent |
GetOutputTextExtent |
GetTabbedTextExtent |
GetOutputTabbedTextExtent |
GetTextMetrics |
GetOutputTextMetrics |
GetCharWidth |
GetOutputCharWidth |
Дополнительные сведения см. в CDCразделе "Контексты устройств".
Inheritance Hierarchy
CDC
Requirements
Header:afxwin.h
CDC::AbortDoc
Завершает текущее задание печати и удаляет все, что приложение записывается на устройство с момента последнего вызова StartDoc функции-члена.
int AbortDoc();
Return Value
Значение больше или равно 0 при успешном выполнении или отрицательное значение, если произошла ошибка. В следующем списке показаны распространенные значения ошибок и их значения:
SP_ERRORОбщая ошибка.SP_OUTOFDISKНедостаточно места на диске в настоящее время доступно для spooling, и больше места не станет доступным.SP_OUTOFMEMORYНедостаточно памяти доступно для spooling.SP_USERABORTПользователь завершил задание с помощью диспетчера печати.
Remarks
Эта функция-член заменяет ABORTDOC экран-экран принтера.
AbortDoc следует использовать для завершения следующих действий:
Операции печати, не указывающие функцию прерывания с помощью
SetAbortProc.Операции печати, которые еще не достигли первого
NEWFRAMEилиNEXTBANDescape-вызова.
Если приложение сталкивается с ошибкой печати или отмененной операцией печати, она не должна пытаться завершить операцию с помощью EndDoc функций класса или AbortDoc членов.CDC GDI автоматически завершает операцию перед возвратом значения ошибки.
Если приложение отображает диалоговое окно, позволяющее пользователю отменить операцию печати, перед уничтожением диалогового окна он должен вызываться AbortDoc .
Если диспетчер печати использовался для запуска задания печати, вызов AbortDoc удаляет все задание спула, принтер не получает ничего. Если диспетчер печати не использовался для запуска задания печати, данные, возможно, были отправлены на принтер до AbortDoc вызова. В этом случае драйвер принтера сбросил принтер (по возможности) и закрыл задание печати.
Example
Пример см. в примере CDC::StartDoc.
CDC::AbortPath
Закрывает и удаляет все пути в контексте устройства.
BOOL AbortPath();
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Если в контексте устройства есть открытая скобка пути, путь закрывается и путь удаляется. Если в контексте устройства есть закрытый путь, путь удаляется.
CDC::AddMetaFileComment
Копирует комментарий из буфера в указанный метафайл расширенного формата.
BOOL AddMetaFileComment(
UINT nDataSize,
const BYTE* pCommentData);
Parameters
nDataSize
Указывает длину буфера комментариев в байтах.
pCommentData
Указывает на буфер, содержащий комментарий.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Комментарий может включать любую частную информацию, например источник рисунка и дату его создания. Комментарий должен начинаться с подписи приложения, а затем данных. Примечания не должны содержать данные о позиции. Данные, относящиеся к позиции, указывают расположение записи и не должны включаться, так как один метафайл может быть внедрен в другой метафайл. Эту функцию можно использовать только с расширенными метафайлами.
CDC::AlphaBlend
Вызовите эту функцию-член, чтобы отобразить растровые изображения с прозрачными или полутранспарентными пикселями.
BOOL AlphaBlend(
int xDest,
int yDest,
int nDestWidth,
int nDestHeight,
CDC* pSrcDC,
int xSrc,
int ySrc,
int nSrcWidth,
int nSrcHeight,
BLENDFUNCTION blend);
Parameters
xDest
Задает координату x в логических единицах верхнего левого угла прямоугольника назначения.
yDest
Задает координату y в логических единицах верхнего левого угла прямоугольника назначения.
nDestWidth
Задает ширину в логических единицах целевого прямоугольника.
nDestHeight
Задает высоту в логических единицах прямоугольника назначения.
pSrcDC
Указатель на контекст исходного устройства.
xSrc
Задает координату x в логических единицах левого верхнего угла исходного прямоугольника.
ySrc
Задает координату y в логических единицах верхнего левого угла исходного прямоугольника.
nSrcWidth
Задает ширину в логических единицах исходного прямоугольника.
nSrcHeight
Задает высоту в логических единицах исходного прямоугольника.
blend
Указывает структуру BLENDFUNCTION .
Return Value
Значение TRUE в случае успешного выполнения; в противном случае — значение FALSE.
Remarks
Дополнительные сведения см AlphaBlend . в пакете SDK для Windows.
CDC::AngleArc
Рисует сегмент линии и дугу.
BOOL AngleArc(
int x,
int y,
int nRadius,
float fStartAngle,
float fSweepAngle);
Parameters
x
Задает логическую координату x центра круга.
y
Задает логическую координату Y центра круга.
nRadius
Указывает радиус круга в логических единицах. Это значение должно быть положительным.
fStartAngle
Задает начальный угол в градусах относительно оси x.
fSweepAngle
Задает угол отвертки в градусах относительно начального угла.
Return Value
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Remarks
Сегмент линии рисуется от текущей позиции к началу дуги. Дуга рисуется вдоль периметра круга с заданным радиусом и центром. Длина дуги определяется заданными углами начала и свертки.
AngleArc перемещает текущую позицию в конечную точку дуги. Дуга, рисуемая этой функцией, может быть эллиптической в зависимости от текущего режима преобразования и сопоставления. Перед рисованием дуги эта функция рисует сегмент линии от текущей позиции до начала дуги. Дуга рисуется путем создания мнимого круга с указанным радиусом вокруг указанной точки центра. Начальная точка дуги определяется измерением счетчика с оси x круга по количеству градусов в начальном углу. Конечная точка находится аналогичным образом путем измерения счетчика с начальной точки по количеству градусов в углу сверток.
Если угол отвертки больше 360 градусов дуги, то несколько раз прометается дуга. Эта функция рисует линии с помощью текущего пера. Рисунок не заполнен.
CDC::Arc
Рисует эллиптическую дугу.
BOOL Arc(
int x1,
int y1,
int x2,
int y2,
int x3,
int y3,
int x4,
int y4);
BOOL Arc(
LPCRECT lpRect,
POINT ptStart,
POINT ptEnd);
Parameters
x1
Задает координату x левого верхнего угла ограничивающего прямоугольника (в логических единицах).
y1
Задает координату y верхнего левого угла ограничивающего прямоугольника (в логических единицах).
x2
Задает координату x правого нижнего угла ограничивающего прямоугольника (в логических единицах).
y2
Указывает координату Y правого нижнего угла ограничивающего прямоугольника (в логических единицах).
x3
Указывает координату x точки, которая определяет начальную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.
y3
Указывает координату y точки, которая определяет начальную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.
x4
Задает координату x точки, определяющей конечную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.
y4
Указывает координату y точки, определяющей конечную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.
lpRect
Указывает ограничивающий прямоугольник (в логических единицах). Для этого параметра можно передать LPRECT объект или CRect объект.
ptStart
Задает координаты x-и y точки, определяющей начальную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге. Для этого параметра можно передать структуру POINTCPoint или объект.
ptEnd
Задает координаты x-и y точки, определяющей конечную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге. Для этого параметра можно передать структуру POINTCPoint или объект.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Дуга, рисуемая с помощью функции, является сегментом многоточия, определенного заданным ограничивающим прямоугольником.
Фактический отправной точкой дуги является точка, в которой луч, нарисованный из центра ограничивающего прямоугольника через указанную начальную точку пересекает многоточие. Фактическая конечная точка дуги — это точка, в которой луч, нарисованный из центра ограничивающего прямоугольника через указанную конечную точку пересекается с многоточием. Дуга рисуется в направлении счетчика. Так как дуга не является закрытой фигурой, она не заполнена. Ширина и высота прямоугольника должны быть больше 2 единиц и меньше 32 767 единиц.
Example
void CDCView::DrawArc(CDC *pDC)
{
// Fill the client area with a thin circle. The circle's
// interior is not filled. The circle's perimeter is
// blue from 6 o'clock to 3 o'clock and red from 3
// o'clock to 6 o'clock.
// Get the client area.
CRect rectClient;
GetClientRect(rectClient);
// Make a couple of pens.
CPen penBlue;
CPen penRed;
CPen *pOldPen;
penBlue.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(0, 0, 255));
penRed.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(255, 0, 0));
// Draw from 3 o'clock to 6 o'clock, counterclockwise,
// in a blue pen.
pOldPen = pDC->SelectObject(&penBlue);
pDC->Arc(rectClient,
CPoint(rectClient.right, rectClient.CenterPoint().y),
CPoint(rectClient.CenterPoint().x, rectClient.right));
// Draw from 6 o'clock to 3 o'clock, counterclockwise,
// in a red pen.
pDC->SelectObject(&penRed);
// Keep the same parameters, but reverse start
// and end points.
pDC->Arc(rectClient,
CPoint(rectClient.CenterPoint().x, rectClient.right),
CPoint(rectClient.right, rectClient.CenterPoint().y));
// Restore the previous pen.
pDC->SelectObject(pOldPen);
}
CDC::ArcTo
Рисует эллиптическую дугу.
BOOL ArcTo(
int x1,
int y1,
int x2,
int y2,
int x3,
int y3,
int x4,
int y4);
BOOL ArcTo(
LPCRECT lpRect,
POINT ptStart,
POINT ptEnd);
Parameters
x1
Задает координату x левого верхнего угла ограничивающего прямоугольника (в логических единицах).
y1
Задает координату y верхнего левого угла ограничивающего прямоугольника (в логических единицах).
x2
Задает координату x правого нижнего угла ограничивающего прямоугольника (в логических единицах).
y2
Указывает координату Y правого нижнего угла ограничивающего прямоугольника (в логических единицах).
x3
Указывает координату x точки, которая определяет начальную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.
y3
Указывает координату y точки, которая определяет начальную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.
x4
Задает координату x точки, определяющей конечную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.
y4
Указывает координату y точки, определяющей конечную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.
lpRect
Указывает ограничивающий прямоугольник (в логических единицах). Можно передать указатель на RECT структуру данных или CRect объект для этого параметра.
ptStart
Задает координаты x-и y точки, определяющей начальную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге. Можно передать структуру POINT данных или CPoint объект для этого параметра.
ptEnd
Задает координаты x-и y точки, определяющей конечную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге. Можно передать структуру POINT данных или CPoint объект для этого параметра.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Эта функция аналогична CDC::Arc, за исключением того, что текущая позиция обновляется. Точки (, x1) и (y1x2), y2указывают ограничивающий прямоугольник. Многоточие, сформированное заданным ограничивающим прямоугольником, определяет кривую дуги. Дуга расширяется по счетчику (направление дуги по умолчанию) от точки, в которой она пересекает радиальную линию от центра ограничивающего прямоугольника к ( x3, ). y3 Дуга заканчивается, где он пересекает радиальную линию от центра ограничивающего прямоугольника к ( x4, y4). Если начальная точка и конечная точка совпадают, то рисуется полный многоточие.
Линия рисуется от текущей позиции к начальной точке дуги. Если ошибка не возникает, текущая позиция устанавливается в конечную точку дуги. Дуга рисуется с помощью текущего пера; он не заполнен.
CDC::Attach
Используйте эту функцию-член для присоединения hDC объекта к объекту CDC .
BOOL Attach(HDC hDC);
Parameters
hDC
Контекст устройства Windows.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Он hDC хранится как в контексте выходного устройства, так m_hDCи в m_hAttribDCконтексте атрибута.
CDC::BeginPath
Открывает скобку пути в контексте устройства.
BOOL BeginPath();
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
После открытия скобки пути приложение может начать вызывать функции рисования GDI, чтобы определить точки, лежащие в пути. Приложение может закрыть скобку открытого EndPath пути, вызвав функцию-член. При вызове BeginPathприложения все предыдущие пути удаляются.
См BeginPath . в пакете SDK для Windows список функций рисования, определяющих точки в пути.
Example
// This implementation uses GDI paths to draw the outline of
// some text in a TrueType font. The path is used to record the way
// the TrueType font would be drawn. Then, the function uses the data
// returned from CDC::GetPath() to draw the font--without filling it.
void CDCView::DrawPath(CDC *pDC)
{
// Describe a 24-point truetype font of normal weight
LOGFONT lf;
memset(&lf, 0, sizeof(lf));
lf.lfHeight = -MulDiv(24, pDC->GetDeviceCaps(LOGPIXELSY), 72);
lf.lfWeight = FW_NORMAL;
lf.lfOutPrecision = OUT_TT_ONLY_PRECIS;
// create and select it
CFont newFont;
if (!newFont.CreateFontIndirect(&lf))
return;
CFont *pOldFont = pDC->SelectObject(&newFont);
// use a path to record how the text was drawn
pDC->BeginPath();
pDC->TextOut(10, 10, _T("Outline this!"));
pDC->EndPath();
// Find out how many points are in the path. Note that
// for long strings or complex fonts, this number might be
// gigantic!
int nNumPts = pDC->GetPath(NULL, NULL, 0);
if (nNumPts == 0)
return;
// Allocate memory to hold points and stroke types from
// the path.
LPPOINT lpPoints = NULL;
LPBYTE lpTypes = NULL;
try
{
lpPoints = new POINT[nNumPts];
lpTypes = new BYTE[nNumPts];
}
catch (CException *pe)
{
delete[] lpPoints;
lpPoints = NULL;
delete[] lpTypes;
lpTypes = NULL;
pe->Delete();
}
if (lpPoints == NULL || lpTypes == NULL)
return;
// Now that we have the memory, really get the path data.
nNumPts = pDC->GetPath(lpPoints, lpTypes, nNumPts);
// If it worked, draw the lines. Windows 98 doesn't support
// the PolyDraw API, so we use our own member function to do
// similar work. If you're targeting only later versions of
// Windows, you can use the PolyDraw() API and avoid the
// COutlineView::PolyDraw() member function.
if (nNumPts != -1)
pDC->PolyDraw(lpPoints, lpTypes, nNumPts);
// Release the memory we used
delete[] lpPoints;
delete[] lpTypes;
// Put back the old font
pDC->SelectObject(pOldFont);
return;
}
CDC::BitBlt
Копирует растровое изображение из исходного контекста устройства в текущий контекст устройства.
BOOL BitBlt(
int x,
int y,
int nWidth,
int nHeight,
CDC* pSrcDC,
int xSrc,
int ySrc,
DWORD dwRop);
Parameters
x
Задает логическую координату x левого верхнего угла прямоугольника назначения.
y
Задает логическую координату y верхнего левого угла прямоугольника назначения.
nWidth
Задает ширину (в логических единицах) целевого прямоугольника и исходного растрового изображения.
nHeight
Задает высоту (в логических единицах) целевого прямоугольника и исходного растрового изображения.
pSrcDC
Указатель на объект, определяющий CDC контекст устройства, из которого будет скопирована растровая карта. Он должен быть NULL , если dwRop указывает операцию растра, которая не включает источник.
xSrc
Задает логическую координату x левого верхнего угла исходного растрового изображения.
ySrc
Указывает логическую координату Y верхнего левого угла исходного растрового изображения.
dwRop
Определяет подлежащую выполнению растровую операцию. Коды операций растра определяют, как GDI объединяет цвета в выходных операциях, включающих текущую кисть, возможное исходное растровое изображение и целевое растровое изображение. Ознакомьтесь BitBlt со списком кодов dwRop операций растровых операций и их описаниями в пакете SDK для Windows
Полный список кодов растровых операций см. в разделе "Сведения о кодах операций растеров" в пакете SDK для Windows.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Приложение может выровнять окна или клиентские области по границам байтов, чтобы убедиться, что BitBlt операции выполняются в прямоугольниках, выровненных по байтам. (Установите CS_BYTEALIGNWINDOW или CS_BYTEALIGNCLIENT флаги при регистрации классов окон.)
BitBlt операции с прямоугольниками с выравниванием байтов значительно быстрее, чем BitBlt операции с прямоугольниками, которые не выровнены по байтам. Если вы хотите указать стили классов, такие как выравнивание байтов для собственного контекста устройства, необходимо зарегистрировать класс окон, а не полагаться на классы Microsoft Foundation, чтобы сделать это для вас. Используйте глобальную функцию AfxRegisterWndClass.
GDI преобразуется nWidth и nHeightодин раз с помощью контекста конечного устройства и один раз с помощью контекста исходного устройства. Если полученные экстенты не соответствуют, GDI использует функцию Windows StretchBlt для сжатия или растяжения исходного растрового изображения по мере необходимости.
Если растровые изображения назначения, источника и шаблона не имеют одного и того же формата цвета, BitBlt функция преобразует исходные и узорные растровые изображения в соответствии с назначением. Цвета переднего плана и фона целевого растрового изображения используются в преобразовании.
BitBlt Когда функция преобразует монохромное растровое изображение в цвет, он задает белые биты (1) в цвет фона и черные биты (0) в цвет переднего плана. Используются цвета переднего плана и фона контекста целевого устройства. Чтобы преобразовать цвет в монохромный, задает пиксели, BitBlt соответствующие цвету фона белому цвету, и задает все остальные пиксели черным.
BitBlt использует цвет переднего плана и фона контекста цветового устройства для преобразования из цвета в монохромный.
Не все контексты устройства поддерживаются BitBlt. Чтобы проверить, поддерживает BitBltли данный контекст устройства, используйте GetDeviceCaps функцию-член и укажите индекс RASTERCAPS.
Example
Пример см. в примере CDC::CreateCompatibleDC.
CDC::CDC
Формирует объект CDC.
CDC();
CDC::Chord
Рисует аккорд (закрытая фигура, ограничивающая пересечением многоточия и сегмента линии).
BOOL Chord(
int x1,
int y1,
int x2,
int y2,
int x3,
int y3,
int x4,
int y4);
BOOL Chord(
LPCRECT lpRect,
POINT ptStart,
POINT ptEnd);
Parameters
x1
Задает координату x левого верхнего угла ограничивающего прямоугольника аккорда (в логических единицах).
y1
Задает координату y левого верхнего угла ограничивающего прямоугольника аккорда (в логических единицах).
x2
Задает координату x правого нижнего угла ограничивающего прямоугольника аккорда (в логических единицах).
y2
Задает координату y правого нижнего угла ограничивающего прямоугольника аккорда (в логических единицах).
x3
Указывает координату x точки, которая определяет начальную точку аккорда (в логических единицах).
y3
Указывает координату y точки, которая определяет начальную точку аккорда (в логических единицах).
x4
Указывает координату x точки, которая определяет конечную точку аккорда (в логических единицах).
y4
Указывает координату y точки, которая определяет конечную точку аккорда (в логических единицах).
lpRect
Указывает ограничивающий прямоугольник (в логических единицах). Для этого параметра можно передать LPRECT объект или CRect объект.
ptStart
Задает координаты x-и y точки, которая определяет начальную точку аккорда (в логических единицах). Этот момент не должен лежать точно на аккорде. Для этого параметра можно передать структуру POINTCPoint или объект.
ptEnd
Задает координаты x-и y точки, определяющей конечную точку аккорда (в логических единицах). Этот момент не должен лежать точно на аккорде. Для этого параметра можно передать структуру POINTCPoint или объект.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Параметры ( x1, y1) x2y2указывают верхние и нижние правые угла соответственно прямоугольника, ограничивающего многоточие, которое является частью аккорда. Параметры ( x3, y3) x4y4указывают конечные точки линии, пересекающей многоточие. Аккорд рисуется с помощью выбранного пера и заполняется с помощью выбранной кисти.
Рисунок, рисуемый Chord функцией, расширяется до, но не включает правые и нижние координаты. Это означает, что высота фигуры и y2 - y1 ширина фигуры .x2 - x1
Example
void CDCView::DrawChord(CDC *pDC)
{
// Fill the client area with a circle. The circle is
// blue and filled with blue, but has a chord cut out
// of it from 3 o'clock to 6 o'clock. That chord is
// red and filled with a red diagonal hatch.
// Get the client area.
CRect rectClient;
GetClientRect(rectClient);
// Make a couple of pens and similar brushes.
CPen penBlue, penRed;
CBrush brushBlue, brushRed;
CBrush *pOldBrush;
CPen *pOldPen;
brushBlue.CreateSolidBrush(RGB(0, 0, 255));
brushRed.CreateHatchBrush(HS_FDIAGONAL, RGB(255, 0, 0));
penBlue.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(0, 0, 255));
penRed.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(255, 0, 0));
// Draw from 3 o'clock to 6 o'clock, counterclockwise,
// in a blue pen with a solid blue fill.
pOldPen = pDC->SelectObject(&penBlue);
pOldBrush = pDC->SelectObject(&brushBlue);
pDC->Chord(rectClient,
CPoint(rectClient.right, rectClient.CenterPoint().y),
CPoint(rectClient.CenterPoint().x, rectClient.right));
// Draw the remaining quarter chord from 6 o'clock
// to 3 o'clock, counterclockwise, in a red pen
// with the hatched brush.
pDC->SelectObject(&penRed);
pDC->SelectObject(&brushRed);
// Keep the same parameters, but reverse start and
// end points.
pDC->Chord(rectClient,
CPoint(rectClient.CenterPoint().x, rectClient.right),
CPoint(rectClient.right, rectClient.CenterPoint().y));
// Restore the previous pen.
pDC->SelectObject(pOldPen);
}
CDC::CloseFigure
Закрывает открытую фигуру в пути.
BOOL CloseFigure();
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Функция закрывает рисунок, рисуя линию из текущей позиции до первой точки фигуры (обычно точек, указанной последним вызовом MoveTo функции-члена) и подключает строки с помощью стиля соединения линий. Если фигура закрыта с помощью LineTo функции-члена, вместо нее CloseFigureиспользуются конечные крышки, чтобы создать угол вместо соединения.
CloseFigure следует вызывать только в том случае, если в контексте устройства есть открытая скобка пути.
Рисунок в пути открыт, если он явно не закрыт с помощью этой функции. (Рисунок может быть открыт, даже если текущая точка и начальная точка фигуры совпадают.) Любая линия или кривая, добавленная к пути после CloseFigure запуска новой фигуры.
CDC::CreateCompatibleDC
Создает контекст устройства памяти, совместимый с устройством, указанным в параметре pDC.
BOOL CreateCompatibleDC(CDC* pDC);
Parameters
pDC
Указатель на контекст устройства. Если pDC это NULLтак, функция создает контекст устройства памяти, совместимый с системным дисплеем.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Контекст устройства памяти — это блок памяти, представляющий область отображения. Его можно использовать для подготовки изображений в памяти перед копированием на фактическую поверхность устройства совместимого устройства.
При создании контекста устройства памяти GDI автоматически выбирает для него 1-по 1 монохромное растровое изображение. Выходные функции GDI можно использовать с контекстом устройства памяти, только если в этом контексте был создан и выбран растровый рисунок.
Эту функцию можно использовать только для создания совместимых контекстов устройств для устройств, поддерживающих операции растра. Сведения о передаче битовых блоков между контекстами устройства см. в CDC::BitBlt функции-члене. Чтобы определить, поддерживает ли контекст устройства операции растра, см RC_BITBLT . возможность растра в функции-члене CDC::GetDeviceCaps.
Example
// This handler loads a bitmap from system resources,
// centers it in the view, and uses BitBlt() to paint the bitmap
// bits.
void CDCView::DrawBitmap(CDC *pDC)
{
// load IDB_BITMAP1 from our resources
CBitmap bmp;
if (bmp.LoadBitmap(IDB_BITMAP1))
{
// Get the size of the bitmap
BITMAP bmpInfo;
bmp.GetBitmap(&bmpInfo);
// Create an in-memory DC compatible with the
// display DC we're using to paint
CDC dcMemory;
dcMemory.CreateCompatibleDC(pDC);
// Select the bitmap into the in-memory DC
CBitmap *pOldBitmap = dcMemory.SelectObject(&bmp);
// Find a centerpoint for the bitmap in the client area
CRect rect;
GetClientRect(&rect);
int nX = rect.left + (rect.Width() - bmpInfo.bmWidth) / 2;
int nY = rect.top + (rect.Height() - bmpInfo.bmHeight) / 2;
// Copy the bits from the in-memory DC into the on-
// screen DC to actually do the painting. Use the centerpoint
// we computed for the target offset.
pDC->BitBlt(nX, nY, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory,
0, 0, SRCCOPY);
dcMemory.SelectObject(pOldBitmap);
}
else
{
TRACE0("ERROR: Where's IDB_BITMAP1?\n");
}
}
CDC::CreateDC
Создает контекст устройства для указанного устройства.
BOOL CreateDC(
LPCTSTR lpszDriverName,
LPCTSTR lpszDeviceName,
LPCTSTR lpszOutput,
const void* lpInitData);
Parameters
lpszDriverName
Указывает на строку, завершающую значение NULL, которая указывает имя файла (без расширения) драйвера устройства (например, "EPSON"). Вы также можете передать CString объект для этого параметра.
lpszDeviceName
Указывает на строку, завершающую значение NULL, указывающую имя поддерживаемого устройства (например, "EPSON FX-80"). Параметр используется, lpszDeviceName если модуль поддерживает несколько устройств. Вы также можете передать CString объект для этого параметра.
lpszOutput
Указывает на строку, завершающую значение NULL, которая указывает имя файла или устройства для физического носителя выходных данных (порт файла или вывода). Вы также можете передать CString объект для этого параметра.
lpInitData
Указывает на структуру DEVMODE , содержащую данные инициализации для конкретного устройства для драйвера устройства. Функция Windows DocumentProperties извлекает эту структуру, заполненную для данного устройства. Параметр lpInitData должен бытьNULL, если драйвер устройства должен использовать инициализацию по умолчанию (если есть), указанную пользователем через панель управления.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Файл заголовка является обязательным, PRINT.H если DEVMODE используется структура.
Имена устройств следуют этим соглашениям: конечная двоеточие (:) рекомендуется, но необязательно. Windows удаляет завершающую двоеточие, чтобы имя устройства, заканчивающееся двоеточием, сопоставлялось с тем же портом, что и имя без двоеточия. Имена драйверов и портов не должны содержать начальные или конечные пробелы. Выходные функции GDI нельзя использовать с контекстами информации.
CDC::CreateIC
Создает контекст сведений для указанного устройства.
BOOL CreateIC(
LPCTSTR lpszDriverName,
LPCTSTR lpszDeviceName,
LPCTSTR lpszOutput,
const void* lpInitData);
Parameters
lpszDriverName
Указывает на строку, завершающую значение NULL, которая указывает имя файла (без расширения) драйвера устройства (например, "EPSON"). Объект для этого параметра можно передать CString .
lpszDeviceName
Указывает на строку, завершающую значение NULL, указывающую имя поддерживаемого устройства (например, "EPSON FX-80"). Параметр используется, lpszDeviceName если модуль поддерживает несколько устройств. Объект для этого параметра можно передать CString .
lpszOutput
Указывает на строку, завершающую значение NULL, которая указывает имя файла или устройства для физического носителя выходных данных (файла или порта). Объект для этого параметра можно передать CString .
lpInitData
Указывает на данные инициализации конкретного устройства для драйвера устройства. Параметр lpInitData должен бытьNULL, если драйвер устройства должен использовать инициализацию по умолчанию (если есть), указанную пользователем через панель управления. См CreateDC . формат данных для инициализации для конкретного устройства.
Return Value
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Remarks
Контекст информации обеспечивает быстрый способ получения сведений об устройстве без создания контекста устройства.
Имена устройств следуют этим соглашениям: конечная двоеточие (:) рекомендуется, но необязательно. Windows удаляет завершающую двоеточие, чтобы имя устройства, заканчивающееся двоеточием, сопоставлялось с тем же портом, что и имя без двоеточия. Имена драйверов и портов не должны содержать начальные или конечные пробелы. Выходные функции GDI нельзя использовать с контекстами информации.
CDC::DeleteDC
Как правило, не вызывайте эту функцию; деструктор сделает это для вас.
BOOL DeleteDC();
Return Value
Ненулевое значение, если функция успешно завершена; в противном случае — 0.
Remarks
Функция-член DeleteDC удаляет контексты устройств Windows, связанные с m_hDC текущим CDC объектом. Если этот CDC объект является последним активным контекстом устройства для данного устройства, все ресурсы хранилища и системы, используемые устройством, освобождаются.
Приложение не должно вызываться DeleteDC , если объекты были выбраны в контексте устройства. Объекты сначала должны быть выбраны из контекста устройства перед его удалением.
Приложение не должно удалять контекст устройства, дескриптор которого получен путем вызова CWnd::GetDC. Вместо этого он должен вызываться CWnd::ReleaseDC для освобождения контекста устройства. Предоставляются CClientDC классы для CWindowDC упаковки этих функций.
Функция DeleteDC обычно используется для удаления контекстов устройства, созданных с помощью CreateDC, CreateICили CreateCompatibleDC.
Example
Пример см. в примере CPrintDialog::GetPrinterDC.
CDC::DeleteTempMap
Вызывается автоматически обработчиком CWinApp времени простоя, удаляет временные DeleteTempMap объекты, CDC созданные FromHandleс помощью, но не уничтожает дескриптор контекста устройства (hDCs) временно связанных с объектамиCDC.
static void PASCAL DeleteTempMap();
CDC::Detach
Вызовите эту функцию, чтобы отсоединить m_hDC (контекст выходного устройства) от CDC объекта и задать оба m_hDC значения m_hAttribDCNULL.
HDC Detach();
Return Value
Контекст устройства Windows.
CDC::DPtoHIMETRIC
Эта функция используется при добавлении HIMETRIC размеров в OLE, преобразовывая пиксели HIMETRICв .
void DPtoHIMETRIC(LPSIZE lpSize) const;
Parameters
lpSize
Указывает на структуру CSize.
Remarks
Если режим сопоставления объекта контекста устройства имеет MM_LOENGLISHзначение , MM_HIENGLISHMM_LOMETRICили MM_HIMETRIC, преобразование основано на количестве пикселей на физическом дюйме. Если режим сопоставления является одним из других неократных режимов (например, MM_TEXT), преобразование основано на количестве пикселей в логическом дюйме.
CDC::DPtoLP
Преобразует единицы устройства в логические единицы.
void DPtoLP(
LPPOINT lpPoints,
int nCount = 1) const;
void DPtoLP(LPRECT lpRect) const;
void DPtoLP(LPSIZE lpSize) const;
Parameters
lpPoints
Указывает на массив POINT структур или CPoint объектов.
nCount
Количество точек в массиве.
lpRect
Указывает на структуру RECT или CRect объект. Этот параметр используется для простого случая преобразования одного прямоугольника из точек устройства в логические точки.
lpSize
Указывает на структуру SIZE или CSize объект.
Remarks
Функция сопоставляет координаты каждой точки или измерения размера из системы координат устройства в логическую систему координат GDI. Преобразование зависит от текущего режима сопоставления и параметров источников и экстентов для окна устройства и окна просмотра.
CDC::Draw3dRect
Вызовите эту функцию-член, чтобы нарисовать трехмерный прямоугольник.
void Draw3dRect(
LPCRECT lpRect,
COLORREF clrTopLeft,
COLORREF clrBottomRight);
void Draw3dRect(
int x,
int y,
int cx,
int cy,
COLORREF clrTopLeft,
COLORREF clrBottomRight);
Parameters
lpRect
Указывает ограничивающий прямоугольник (в логических единицах). Можно передать указатель на RECT структуру или CRect объект для этого параметра.
clrTopLeft
Задает цвет верхней и левой сторон трехмерного прямоугольника.
clrBottomRight
Задает цвет нижней и правой сторон трехмерного прямоугольника.
x
Задает логическую координату x левого верхнего угла трехмерного прямоугольника.
y
Задает логическую координату y левого верхнего угла трехмерного прямоугольника.
cx
Задает ширину трехмерного прямоугольника.
cy
Задает высоту трехмерного прямоугольника.
Remarks
Прямоугольник будет нарисован с верхними и левыми сторонами в цвете, указанном clrTopLeft в нижней и правой сторонах в цвете, заданном .clrBottomRight
Example
void CDCView::Draw3dRect(CDC *pDC)
{
// get the client area
CRect rect;
GetClientRect(rect);
// shrink our rect 20 pixels on all sides
rect.DeflateRect(20, 20);
// draw a rectangle with red top and left sides, and
// green right and bottom sides.
pDC->Draw3dRect(rect, RGB(255, 0, 0), RGB(0, 255, 0));
// This call to the four-integer override would draw
// the same rectangle with a little less convenience:
// pDC->Draw3dRect(rect.left, rect.top, rect.Width(), rect.Height(),
// RGB(255, 0, 0), RGB(0, 255, 0));
}
CDC::DrawDragRect
Вызовите эту функцию-член многократно, чтобы перераскрыть прямоугольник перетаскивания.
void DrawDragRect(
LPCRECT lpRect,
SIZE size,
LPCRECT lpRectLast,
SIZE sizeLast,
CBrush* pBrush = NULL,
CBrush* pBrushLast = NULL);
Parameters
lpRect
Указывает на RECT структуру или CRect объект, указывающий логические координаты прямоугольника— в данном случае конец отрисовки прямоугольника.
size
Задает смещение от верхнего левого угла внешней границы к левому верхнему углу внутренней границы (т. е. толщины границы) прямоугольника.
lpRectLast
Указывает на RECT структуру или CRect объект, указывающий логические координаты позиции прямоугольника — в данном случае исходная позиция прямоугольника.
sizeLast
Указывает перемещение из левого верхнего угла внешней границы в левый верхний угол внутренней границы (т. е. толщину границы) исходного прямоугольника, перезаписываемого.
pBrush
Указатель на объект кисти. Установите для NULL использования кисти по умолчанию полутон.
pBrushLast
Указатель на последний используемый объект кисти. Установите для NULL использования кисти по умолчанию полутон.
Remarks
Вызовите его в цикле в качестве образца позиции мыши, чтобы дать визуальный отзыв. При вызове DrawDragRectпредыдущий прямоугольник удаляется и создается новый прямоугольник. Например, когда пользователь перетаскивает прямоугольник по экрану, DrawDragRect стирает исходный прямоугольник и перерисовывает новый прямоугольник в новой позиции. По умолчанию рисует DrawDragRect прямоугольник с помощью полутонной кисти, чтобы исключить мерцание и создать внешний вид плавно перемещаемого прямоугольника.
При первом вызове DrawDragRectlpRectLast параметр должен бытьNULL.
CDC::DrawEdge
Вызовите эту функцию-член, чтобы нарисовать края прямоугольника указанного типа и стиля.
BOOL DrawEdge(
LPRECT lpRect,
UINT nEdge,
UINT nFlags);
Parameters
lpRect
Указатель на RECT структуру, содержащую логические координаты прямоугольника.
nEdge
Указывает тип внутреннего и внешнего края для рисования. Этот параметр должен быть сочетанием одного флага внутренней границы и одного внешнего флага границы. Ознакомьтесь DrawEdge с пакетом SDK для Windows для таблицы типов параметров.
nFlags
Флаги, указывающие тип границы, нарисуемой. Ознакомьтесь DrawEdge с пакетом SDK для Windows для таблицы значений параметра. Для диагональных линий BF_RECT флаги указывают конечную точку вектора, ограничивающегося параметром прямоугольника.
Return Value
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
CDC::DrawEscape
Обращается к возможностям рисования видеотрансляции, которые не доступны напрямую через интерфейс графического устройства (GDI).
int DrawEscape(
int nEscape,
int nInputSize,
LPCSTR lpszInputData);
Parameters
nEscape
Указывает выполняемую функцию escape-файла.
nInputSize
Указывает количество байтов данных, на которые указывает lpszInputData параметр.
lpszInputData
Указывает на входную структуру, необходимую для указанного escape-обхода.
Return Value
Указывает результат функции. Больше нуля при успешном выполнении, за исключением QUERYESCSUPPORT escape-обхода рисования, который проверяет только реализацию; или ноль, если экран не реализован; или меньше нуля, если произошла ошибка.
Remarks
При вызове DrawEscapeприложения данные, идентифицированные nInputSize и lpszInputData передаются непосредственно указанному драйверу отображения.
CDC::DrawFocusRect
Рисует прямоугольник в стиле, используемом для указания того, что прямоугольник имеет фокус.
void DrawFocusRect(LPCRECT lpRect);
Parameters
lpRect
Указывает на RECT структуру или CRect объект, указывающий логические координаты прямоугольника, нарисованного.
Remarks
Так как это логическая функция XOR (^), вызывая эту функцию во второй раз с тем же прямоугольником, удаляет прямоугольник из дисплея. Прямоугольник, рисуемый этой функцией, не может быть прокручен. Чтобы прокрутить область, содержащую прямоугольник, нарисованный этой функцией, сначала вызовите DrawFocusRect удаление прямоугольника из дисплея, а затем прокрутите область, а затем снова вызовите DrawFocusRect , чтобы нарисовать прямоугольник в новой позиции.
Caution
DrawFocusRect работает только в MM_TEXT режиме. В других режимах эта функция неправильно рисует прямоугольник фокуса, но не возвращает значения ошибок.
CDC::DrawFrameControl
Вызовите эту функцию-член, чтобы нарисовать элемент управления кадром указанного типа и стиля.
BOOL DrawFrameControl(
LPRECT lpRect,
UINT nType,
UINT nState);
Parameters
lpRect
Указатель на RECT структуру, содержащую логические координаты прямоугольника.
nType
Указывает тип элемента управления кадром для рисования. См. uType параметр в DrawFrameControl пакете SDK для Windows для списка возможных значений этого параметра.
nState
Указывает начальное состояние элемента управления кадром. Может быть одним или несколькими значениями, описанными для uState параметра в DrawFrameControl пакете SDK для Windows.
nState Используйте значение DFCS_ADJUSTRECT для настройки ограничивающего прямоугольника, чтобы исключить окружающий край кнопки.
Return Value
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Remarks
В нескольких случаях nState зависит от nType параметра. В следующем списке показана связь между четырьмя nType значениями и nState:
DFC_BUTTONDFCS_BUTTON3STATEКнопка "Три состояния"DFCS_BUTTONCHECKФлажокDFCS_BUTTONPUSHКнопкаDFCS_BUTTONRADIOПереключательDFCS_BUTTONRADIOIMAGEИзображение для переключателя (несовершение требуется изображение)DFCS_BUTTONRADIOMASKМаска для переключателя (некватр нуждается в маске)
DFC_CAPTIONDFCS_CAPTIONCLOSEКнопка "Закрыть"DFCS_CAPTIONHELPКнопка справкиDFCS_CAPTIONMAXКнопка "Развернуть"DFCS_CAPTIONMINКнопка "Свернуть"DFCS_CAPTIONRESTOREКнопка "Восстановить"
DFC_MENUDFCS_MENUARROWСтрелка подменюDFCS_MENUBULLETПуляDFCS_MENUCHECKФлажок
DFC_SCROLLDFCS_SCROLLCOMBOBOXПолоса прокрутки поля со спискомDFCS_SCROLLDOWNСтрелка вниз полосы прокруткиDFCS_SCROLLLEFTСтрелка влево полосы прокруткиDFCS_SCROLLRIGHTСтрелка вправо полосы прокруткиDFCS_SCROLLSIZEGRIPСцепление размера в правом нижнем углу окнаDFCS_SCROLLUPСтрелка вверх по полосе прокрутки
Example
Этот код рисует захват размера в правом нижнем углу окна. Он подходит для OnPaint обработчика диалогового окна, который не имеет стилей и обычно не содержит другие элементы управления (например, строка состояния), которые могут дать ему захват размера.
void CDCView::DrawFC(CDC *pDC)
{
CRect rc;
GetClientRect(&rc);
rc.left = rc.right - ::GetSystemMetrics(SM_CXHSCROLL);
rc.top = rc.bottom - ::GetSystemMetrics(SM_CYVSCROLL);
pDC->DrawFrameControl(rc, DFC_SCROLL, DFCS_SCROLLSIZEGRIP);
}
CDC::DrawIcon
Рисует значок на устройстве, представленном текущим CDC объектом.
BOOL DrawIcon(
int x,
int y,
HICON hIcon);
BOOL DrawIcon(
POINT point,
HICON hIcon);
Parameters
x
Задает логическую координату x левого верхнего угла значка.
y
Задает логическую координату y левого верхнего угла значка.
hIcon
Определяет дескриптор нарисованного значка.
point
Задает логические координаты x-и y верхнего левого угла значка. Вы можете передать структуру POINTCPoint или объект для этого параметра.
Return Value
Ненулевое значение, если функция успешно завершена; в противном случае — 0.
Remarks
Функция помещает верхний левый угол значка в расположении, указанном x и y. Расположение зависит от текущего режима сопоставления контекста устройства.
Ресурс значка должен быть загружен ранее с помощью функций CWinApp::LoadIconили CWinApp::LoadStandardIconCWinApp::LoadOEMIcon. Перед MM_TEXT использованием этой функции необходимо выбрать режим сопоставления.
Example
Пример см. в примере CWnd::IsIconic.
CDC::DrawState
Вызовите эту функцию-член, чтобы отобразить изображение и применить визуальный эффект, чтобы указать состояние, например отключенное или состояние по умолчанию.
Note
Для всех nFlag состояний, кроме DSS_NORMALтого, изображение преобразуется в монохром перед применением визуального эффекта.
BOOL DrawState(
CPoint pt,
CSize size,
HBITMAP hBitmap,
UINT nFlags,
HBRUSH hBrush = NULL);
BOOL DrawState(
CPoint pt,
CSize size,
CBitmap* pBitmap,
UINT nFlags,
CBrush* pBrush = NULL);
BOOL DrawState(
CPoint pt,
CSize size,
HICON hIcon,
UINT nFlags,
HBRUSH hBrush = NULL);
BOOL DrawState(
CPoint pt,
CSize size,
HICON hIcon,
UINT nFlags,
CBrush* pBrush = NULL);
BOOL DrawState(
CPoint pt,
CSize size,
LPCTSTR lpszText,
UINT nFlags,
BOOL bPrefixText = TRUE,
int nTextLen = 0,
HBRUSH hBrush = NULL);
BOOL DrawState(
CPoint pt,
CSize size,
LPCTSTR lpszText,
UINT nFlags,
BOOL bPrefixText = TRUE,
int nTextLen = 0,
CBrush* pBrush = NULL);
BOOL DrawState(
CPoint pt,
CSize size,
DRAWSTATEPROC lpDrawProc,
LPARAM lData,
UINT nFlags,
HBRUSH hBrush = NULL);
BOOL DrawState(
CPoint pt,
CSize size,
DRAWSTATEPROC lpDrawProc,
LPARAM lData,
UINT nFlags,
CBrush* pBrush = NULL);
Parameters
pt
Указывает расположение изображения.
size
Указывает размер изображения.
hBitmap
Дескриптор растрового изображения.
nFlags
Флаги, указывающие тип изображения и состояние. Сведения о возможных DrawState см. в пакете SDK для Windows.
hBrush
Дескриптор кисти.
pBitmap
Указатель на объект CBitmap.
pBrush
Указатель на объект CBrush.
hIcon
Дескриптор для значка.
lpszText
Указатель на текст.
bPrefixText
Текст, который может содержать ускоритель mnemonic. Параметр lData задает адрес строки, а nTextLen параметр задает длину. Если nTextLen значение равно 0, предполагается, что строка будет завершена null.
nTextLen
Длина текстовой строки, на которую указывает lpszText. Если nTextLen значение равно 0, предполагается, что строка будет завершена null.
lpDrawProc
Указатель на функцию обратного вызова, используемую для отрисовки изображения. Этот параметр требуется, если тип изображения указан nFlagsDST_COMPLEX. Это необязательно и может быть NULL , если тип изображения имеет тип DST_TEXT. Для всех других типов изображений этот параметр игнорируется. Дополнительные сведения о функции обратного вызова см DrawStateProc . в пакете SDK для Windows.
lData
Указывает сведения о изображении. Значение этого параметра зависит от типа изображения.
Return Value
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
CDC::DrawText
Вызовите эту функцию-член для форматирования текста в заданном прямоугольнике. Чтобы указать дополнительные параметры форматирования, используйте CDC::DrawTextEx.
virtual int DrawText(
LPCTSTR lpszString,
int nCount,
LPRECT lpRect,
UINT nFormat);
int DrawText(
const CString& str,
LPRECT lpRect,
UINT nFormat);
Parameters
lpszString
Указывает на строку, которая должна быть нарисована. Если nCount значение равно -1, строка должна быть завершена со значением NULL.
nCount
Указывает количество символов в строке. Если nCount значение равно -1, предполагается, что длинный указатель на строку, завершаемую null, lpszString и DrawText вычисляет число символов автоматически.
lpRect
Указывает на RECT структуру или CRect объект, содержащий прямоугольник (в логических координатах), в котором текст должен быть отформатирован.
str
CString Объект, содержащий указанные символы для рисования.
nFormat
Задает метод форматирования текста. Это может быть любое сочетание значений, описанных для uFormat параметра в DrawText пакете SDK для Windows. (объединение с помощью битового оператора OR):
Note
Некоторые uFormat сочетания флагов могут привести к изменению переданной строки. Использование DT_MODIFYSTRING с DT_END_ELLIPSIS любой или DT_PATH_ELLIPSIS может привести к изменению строки, вызывая утверждение в CString переопределении. Значения DT_CALCRECT, , DT_EXTERNALLEADINGDT_INTERNALи DT_NOCLIPDT_NOPREFIX не могут использоваться со значениемDT_TABSTOP.
Return Value
Высота текста, если функция выполнена успешно.
Remarks
Он форматирует текст, расширяя вкладки в соответствующие пробелы, выравнивая текст слева, справа или в центре заданного прямоугольника, а также разбивая текст на строки, соответствующие заданному прямоугольнику. Тип форматирования указывается в параметре nFormat.
Эта функция-член использует выбранный шрифт контекста устройства, цвет текста и цвет фона для рисования текста. Если DT_NOCLIP формат не используется, вырезает текст таким образом, DrawText чтобы текст не отображался за пределами заданного прямоугольника. Предполагается, что все форматирование имеет несколько строк, если DT_SINGLELINE этот формат не задан.
Если выбранный шрифт слишком велик для указанного прямоугольника, DrawText функция-член не пытается заменить меньший шрифт.
DT_CALCRECT Если флаг указан, прямоугольник, указанный bylpRect, будет обновлен, чтобы отразить ширину и высоту, необходимую для рисования текста.
TA_UPDATECP Если флаг выравнивания текста установлен (см. смCDC::SetTextAlign.), DrawText отобразит текст, начиная с текущей позиции, а не слева от заданного прямоугольника.
DrawText не будет упаковывать текст при TA_UPDATECP установке флага (т. е DT_WORDBREAK . флаг не будет иметь эффекта).
Цвет текста может быть задан.CDC::SetTextColor
CDC::DrawTextEx
Форматирует текст в заданном прямоугольнике.
virtual int DrawTextEx(
LPTSTR lpszString,
int nCount,
LPRECT lpRect,
UINT nFormat,
LPDRAWTEXTPARAMS lpDTParams);
int DrawTextEx(
const CString& str,
LPRECT lpRect,
UINT nFormat,
LPDRAWTEXTPARAMS lpDTParams);
Parameters
lpszString
Указывает на строку, которая должна быть нарисована. Если nCount значение равно -1, строка должна быть завершена null.
nCount
Указывает количество символов в строке. Если nCount значение равно -1, предполагается, что длинный указатель на строку, завершаемую null, lpszString и DrawText вычисляет число символов автоматически.
lpRect
Указывает на RECT структуру или CRect объект, содержащий прямоугольник (в логических координатах), в котором текст должен быть отформатирован.
str
CString Объект, содержащий указанные символы для рисования.
nFormat
Задает метод форматирования текста. Это может быть любое сочетание значений, описанных для uFormat параметра в DrawText пакете SDK для Windows. (Объединение с помощью битового побитового Оператор OR ):
Note
Некоторые uFormat сочетания флагов могут привести к изменению переданной строки. Использование DT_MODIFYSTRING с DT_END_ELLIPSIS любой или DT_PATH_ELLIPSIS может привести к изменению строки, вызывая утверждение в CString переопределении. Значения DT_CALCRECT, , DT_EXTERNALLEADINGDT_INTERNALи DT_NOCLIPDT_NOPREFIX не могут использоваться со значениемDT_TABSTOP.
lpDTParams
Указатель на структуру DRAWTEXTPARAMS , указывающую дополнительные параметры форматирования. Этот параметр может иметь значение NULL.
Remarks
Он форматирует текст, расширяя вкладки в соответствующие пробелы, выравнивая текст слева, справа или в центре заданного прямоугольника, а также разбивая текст на строки, соответствующие заданному прямоугольнику. Тип форматирования определяется nFormat и lpDTParams. Дополнительные сведения см CDC::DrawText . и DrawTextEx в пакете SDK для Windows.
Цвет текста может быть задан.CDC::SetTextColor
CDC::Ellipse
Рисование эллипса.
BOOL Ellipse(
int x1,
int y1,
int x2,
int y2);
BOOL Ellipse(LPCRECT lpRect);
Parameters
x1
Задает логическую координату x левого верхнего угла ограничивающего прямоугольника эллипса.
y1
Задает логическую координату y левого верхнего угла ограничивающего прямоугольника эллипса.
x2
Задает логическую координату x правого нижнего угла ограничивающего прямоугольника эллипса.
y2
Задает логическую координату y правого нижнего угла ограничивающего прямоугольника эллипса.
lpRect
Задает ограничивающий прямоугольник многоточия. Вы также можете передать CRect объект для этого параметра.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Центр многоточия является центром ограничивающего прямоугольника, указанного x1в , y1x2и , или y2lpRect. Многоточие рисуется с текущим пером, и его интерьер заполняется текущей кистью.
Рисунок, нарисованный этой функцией, расширяется до, но не включает, правые и нижние координаты. Это означает, что высота фигуры и y2 - y1 ширина фигуры .x2 - x1
Если ширина или высота ограничивающего прямоугольника равна 0, многоточие не рисуется.
CDC::EndDoc
Завершает задание печати, запущенное вызовом StartDoc функции-члена.
int EndDoc();
Return Value
Больше или равно 0, если функция выполнена успешно, или отрицательное значение, если произошла ошибка.
Remarks
Эта функция-член заменяет ENDDOC escape-файл принтера и должен вызываться сразу после завершения успешного задания печати.
Если приложение сталкивается с ошибкой печати или отмененной операцией печати, она не должна пытаться завершить операцию с помощью либо EndDocAbortDoc. GDI автоматически завершает операцию перед возвратом значения ошибки.
Эта функция не должна использоваться внутри метафайлов.
Example
Пример см. в примере CDC::StartDoc.
CDC::EndPage
Сообщает устройству, что приложение завершило запись на страницу.
int EndPage();
Return Value
Больше или равно 0, если функция выполнена успешно, или отрицательное значение, если произошла ошибка.
Remarks
Эта функция-член обычно используется для перенаправления драйвера устройства на новую страницу.
Эта функция-член заменяет NEWFRAME экран-экран принтера. В отличие от NEWFRAMEэтого, эта функция всегда вызывается после печати страницы.
Example
Пример см. в примере CDC::StartDoc.
CDC::EndPath
Закрывает скобку пути и выбирает путь, определенный скобкой в контексте устройства.
BOOL EndPath();
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Example
Пример см. в примере CDC::BeginPath.
CDC::EnumObjects
Перечисляет ручки и кисти, доступные в контексте устройства.
int EnumObjects(
int nObjectType,
int (CALLBACK* lpfn)(
LPVOID,
LPARAM),
LPARAM lpData);
Parameters
nObjectType
Указывает тип объекта. Он может иметь значения OBJ_BRUSH или OBJ_PEN.
lpfn
Адрес экземпляра процедуры для функции обратного вызова, предоставленной приложением. См. раздел "Примечания" ниже.
lpData
Указывает на предоставленные приложением данные. Данные передаются функции обратного вызова вместе с информацией об объекте.
Return Value
Указывает последнее значение, возвращаемое функцией обратного вызова. Его значение определяется пользователем.
Remarks
Для каждого объекта заданного типа функция обратного вызова, передаваемая вами, вызывается с информацией для этого объекта. Система вызывает функцию обратного вызова, пока не будет больше объектов или функция обратного вызова возвращает значение 0.
Новые функции Microsoft Visual C++ позволяют использовать обычную функцию в качестве функции, переданной в EnumObjects. Переданный адрес EnumObjects является указателем на функцию, экспортированную с EXPORT помощью соглашения о вызовах Pascal. В приложениях в защищенном режиме не нужно создавать эту функцию с помощью функции Windows MakeProcInstance или освобождать функцию после использования с FreeProcInstance функцией Windows.
Кроме того, вам не нужно экспортировать имя функции в инструкции EXPORTS в файле определения модуля приложения. Вместо этого можно использовать EXPORT модификатор функции, как и в
INT CALLBACK EXPORT AFunction (LPSTR, LPSTR);
Чтобы компилятор выдает правильную запись экспорта для экспорта по имени без псевдонима. Это работает для большинства потребностей. Для некоторых особых случаев, таких как экспорт функции путем порядкового или псевдонима экспорта, вам по-прежнему необходимо использовать EXPORTS инструкцию в файле определения модуля.
Для компиляции программ Microsoft Foundation обычно используются /GA параметры компилятора./GEs Параметр /Gw компилятора не используется с классами Microsoft Foundation. (Если вы используете функцию Windows, необходимо явно привести указатель возвращаемой функции MakeProcInstanceк FARPROC типу, необходимому в этом API.) Интерфейсы регистрации обратного вызова теперь являются типобезопасны (необходимо передать указатель функции, указывающий на правильную функцию для конкретного обратного вызова).
Кроме того, все функции обратного вызова должны перехватывать исключения Microsoft Foundation перед возвращением в Windows, так как исключения нельзя создавать через границы обратного вызова. Дополнительные сведения об исключениях см. в статье "Исключения".
Example
// print some info about a pen we're ready to enumerate
BOOL CALLBACK EnumObjectHandler(LPVOID lpLogObject, LPARAM /* lpData */)
{
LOGPEN *pPen = (LOGPEN *)lpLogObject;
switch (pPen->lopnStyle)
{
case PS_SOLID:
TRACE0("PS_SOLID: ");
break;
case PS_DASH:
TRACE0("PS_DASH: ");
break;
case PS_DOT:
TRACE0("PS_DOT: ");
break;
case PS_DASHDOT:
TRACE0("PS_DASHDOT: ");
break;
case PS_DASHDOTDOT:
TRACE0("PS_DASHDOTDOT: ");
break;
case PS_NULL:
TRACE0("PS_NULL: ");
break;
case PS_INSIDEFRAME:
TRACE0("PS_INSIDEFRAME:");
break;
default:
TRACE0("unk style:");
}
TRACE2("Color: 0x%8.8X, Width: %d\n", pPen->lopnColor, pPen->lopnWidth);
return TRUE;
}
// get the default printer and enumerate the pens it has
void CDCView::OnEnumPens()
{
CPrintDialog dlg(FALSE);
dlg.GetDefaults();
HDC hdc = dlg.GetPrinterDC();
if (hdc != NULL)
{
CDC dc;
dc.Attach(hdc);
VERIFY(dc.EnumObjects(OBJ_PEN, EnumObjectHandler, 0));
}
}
CDC::Escape
Эта функция-член практически устарела для программирования Win32.
virtual int Escape(
int nEscape,
int nCount,
LPCSTR lpszInData,
LPVOID lpOutData);
int Escape(
int nEscape,
int nInputSize,
LPCSTR lpszInputData,
int nOutputSize,
LPSTR lpszOutputData);
Parameters
nEscape
Указывает выполняемую функцию escape-файла.
Полный список escape-функций см Escape . в пакете SDK для Windows.
nCount
Указывает количество байтов данных, на которые указывает lpszInData.
lpszInData
Указывает на структуру входных данных, необходимую для этого escape-обхода.
lpOutData
Указывает на структуру, которая получает выходные данные из этого escape-файла. Если lpOutData данные не возвращаются, параметр NULL не возвращается.
nInputSize
Указывает количество байтов данных, на которые указывает lpszInputData параметр.
lpszInputData
Указывает на входную структуру, необходимую для указанного escape-обхода.
nOutputSize
Указывает количество байтов данных, на которые указывает lpszOutputData параметр.
lpszOutputData
Указывает на структуру, которая получает выходные данные из этого escape-файла. Этот параметр должен быть NULL , если данные не возвращаются.
Return Value
Положительное значение возвращается, если функция выполнена успешно, за исключением QUERYESCSUPPORT escape-файла, который проверяет только реализацию. Ноль возвращается, если escape-файл не реализован. Отрицательное значение возвращается, если произошла ошибка. Ниже приведены распространенные значения ошибок:
SP_ERRORОбщая ошибка.SP_OUTOFDISKНедостаточно места на диске в настоящее время доступно для spooling, и больше места не станет доступным.SP_OUTOFMEMORYНедостаточно памяти доступно для spooling.SP_USERABORTПользователь завершил задание с помощью диспетчера печати.
Remarks
Из исходных экранов принтера поддерживается только QUERYESCSUPPORT для приложений Win32. Все остальные экраны принтера устарели и поддерживаются только для совместимости с 16-разрядными приложениями.
Для программирования Win32 теперь предоставляются шесть функций-членов, CDC заменяющих соответствующие экраны принтера:
Кроме того, CDC::GetDeviceCaps поддерживает индексы Win32, заменяющие экраны других принтеров. Дополнительные сведения см GetDeviceCaps . в пакете SDK для Windows.
Эта функция-член позволяет приложениям получать доступ к объектам определенного устройства, которое не доступно напрямую через GDI.
Используйте первую версию, если приложение использует предопределенные escape-значения. Используйте вторую версию, если приложение определяет частные escape-значения. Дополнительные сведения о второй версии см ExtEscape . в пакете SDK для Windows.
CDC::ExcludeClipRect
Создает новый регион вырезки, состоящий из существующей области вырезки минус указанный прямоугольник.
int ExcludeClipRect(
int x1,
int y1,
int x2,
int y2);
int ExcludeClipRect(LPCRECT lpRect);
Parameters
x1
Задает логическую координату x левого верхнего угла прямоугольника.
y1
Задает логическую координату Y верхнего левого угла прямоугольника.
x2
Задает логическую координату x правого нижнего угла прямоугольника.
y2
Задает логическую координату y правого нижнего угла прямоугольника.
lpRect
Задает прямоугольник. Может также быть CRect объектом.
Return Value
Указывает тип нового региона вырезки. В качестве такой точки может выступать любой из следующих вариантов:
COMPLEXREGIONРегион имеет перекрывающиеся границы.ERRORНе было создано ни одного региона.NULLREGIONРегион пуст.SIMPLEREGIONРегион не имеет перекрывающихся границ.
Remarks
Ширина прямоугольника, указанная абсолютным значением x2 - x1, не должна превышать 32 767 единиц. Это ограничение также применяется к высоте прямоугольника.
CDC::ExcludeUpdateRgn
Запрещает рисование в недопустимых областях окна, исключая обновленный регион в окне из области вырезки, связанной CDC с объектом.
int ExcludeUpdateRgn(CWnd* pWnd);
Parameters
pWnd
Указывает на объект окна, окно которого обновляется.
Return Value
Тип исключенного региона. Это может быть любое из следующих значений:
COMPLEXREGIONРегион имеет перекрывающиеся границы.ERRORНе было создано ни одного региона.NULLREGIONРегион пуст.SIMPLEREGIONРегион не имеет перекрывающихся границ.
CDC::ExtFloodFill
Заполняет область поверхности отображения текущей кистью.
BOOL ExtFloodFill(
int x,
int y,
COLORREF crColor,
UINT nFillType);
Parameters
x
Задает логическую координату x точки, в которой начинается заполнение.
y
Указывает логическую координату y точки, в которой начинается заполнение.
crColor
Задает цвет границы или области, заполняемой. Интерпретация crColor зависит от значения nFillType.
nFillType
Указывает тип выполняемой заливки наводнения. Это должно быть одно из следующих значений:
FLOODFILLBORDERОбласть заливки ограничивается цветом, заданным.crColorЭтот стиль идентичен заполнению, выполняемойFloodFill.FLOODFILLSURFACEОбласть заливки определяется цветом, заданным.crColorЗаполнение продолжается во всех направлениях до тех пор, пока встречается цвет. Этот стиль полезен для заполнения областей с многоцветными границами.
Return Value
Ненулевое значение, если функция выполнена успешно; В противном случае значение 0, если заполнение не удалось завершить, если заданная точка имеет цвет границы, заданный crColor (если FLOODFILLBORDER запрашивался), если заданная точка не имеет цвета, указанного crColor (если FLOODFILLSURFACE запросили), или если точка находится за пределами области вырезки.
Remarks
Эта функция-член обеспечивает большую гибкость, чем FloodFill из-за того, что можно указать тип nFillTypeзаполнения.
Если nFillType задано значение FLOODFILLBORDER, то предполагается, что область полностью ограничена цветом, указанным в параметре crColor. Функция начинается с точки, указанной xy и заполняет все направления границы цвета.
Если nFillType задано значение FLOODFILLSURFACE, функция начинается в точке, указанной x и y продолжается во всех направлениях, заполняя все смежные области, содержащие цвет, указанный в параметре crColor.
Поддерживаются только контексты и устройства памяти, поддерживающие технологию ExtFloodFillрастрового отображения. Дополнительные сведения см. в функции-члене GetDeviceCaps .
CDC::ExtTextOut
Вызовите эту функцию-член, чтобы написать символьную строку в прямоугольной области с помощью выбранного в данный момент шрифта.
virtual BOOL ExtTextOut(
int x,
int y,
UINT nOptions,
LPCRECT lpRect,
LPCTSTR lpszString,
UINT nCount,
LPINT lpDxWidths);
BOOL ExtTextOut(
int x,
int y,
UINT nOptions,
LPCRECT lpRect,
const CString& str,
LPINT lpDxWidths);
Parameters
x
Задает логическую координату x ячейки символа для первого символа в указанной строке.
y
Задает логическую координату y верхней части ячейки символа для первого символа в указанной строке.
nOptions
Указывает тип прямоугольника. Этот параметр может быть одним или ни одним из следующих значений:
ETO_CLIPPEDУказывает, что текст обрезается к прямоугольнику.ETO_OPAQUEУказывает, что текущий цвет фона заполняет прямоугольник. (Вы можете задать и запросить текущий цвет фонаSetBkColorс помощью функций-членов.GetBkColor)
lpRect
Указывает на RECT структуру, которая определяет размеры прямоугольника. Этот параметр может иметь значение NULL. Вы также можете передать CRect объект для этого параметра.
lpszString
Указывает на указанную строку символов, которая должна быть нарисована. Вы также можете передать CString объект для этого параметра.
nCount
Указывает количество знаков в строке.
lpDxWidths
Указывает на массив значений, указывающий расстояние между источниками смежных ячеек символов. Например, lpDxWidthsлогические единицы [ i] будут отделять источники символьной ячейки i и ячейки i символов + 1. В противном lpDxWidths случае NULLExtTextOutиспользуется интервал по умолчанию между символами.
str
CString Объект, содержащий указанные символы для рисования.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Прямоугольная область может быть непрозрачной (заполненной текущим цветом фона), и это может быть область вырезки.
Если nOptions значение равно 0 и lpRect имеет значение NULL, функция записывает текст в контекст устройства без использования прямоугольной области. По умолчанию текущая позиция не используется или обновляется функцией. Если приложению необходимо обновить текущую позицию при вызове ExtTextOut, приложение может вызвать CDC функцию-член SetTextAlign с заданным nFlags значением TA_UPDATECP. Если этот флаг задан, Windows игнорирует x и y при последующих вызовах ExtTextOut и использует текущую позицию. Если приложение используется TA_UPDATECP для обновления текущей позиции, ExtTextOut задает текущую позицию в конце предыдущей строки текста или положение, указанное последним элементом массива, на который указывает lpDxWidthsзначение , на которое больше.
CDC::FillPath
Закрывает все открытые фигуры в текущем пути и заполняет интерьер пути с помощью текущего режима заполнения кисти и многоугольника.
BOOL FillPath();
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
После заполнения внутренних элементов путь удаляется из контекста устройства.
CDC::FillRect
Вызовите эту функцию-член, чтобы заполнить заданный прямоугольник с помощью указанной кисти.
void FillRect(
LPCRECT lpRect,
CBrush* pBrush);
Parameters
lpRect
Указывает на RECT структуру, содержащую логические координаты прямоугольника, который должен быть заполнен. Вы также можете передать CRect объект для этого параметра.
pBrush
Определяет кисть, используемую для заполнения прямоугольника.
Remarks
Функция заполняет полный прямоугольник, включая левые и верхние границы, но не заполняет правые и нижние границы.
Кисть должна быть создана с помощью CBrush функций-членов CreateHatchBrush, CreatePatternBrushа CreateSolidBrushтакже или извлекается функцией GetStockObject Windows.
При заполнении указанного прямоугольника не включает правые и нижние стороны прямоугольника FillRect . GDI заполняет прямоугольник до, но не включает в себя правый столбец и нижнюю строку независимо от текущего режима сопоставления.
FillRectсравнивает значения top, bottomleftи right члены указанного прямоугольника. Если bottom значение меньше или topравно, или right если меньше или равно left, прямоугольник не рисуется.
FillRect похоже CDC::FillSolidRectна ; однако принимает кисть и, следовательно, FillRect можно использовать для заполнения прямоугольника сплошным цветом, дитерированных кистей или шаблона.
FillSolidRect использует только сплошные цвета (указанные параметром COLORREF ).
FillRect обычно медленнее FillSolidRect.
CDC::FillRgn
Заполняет область, указанную pRgn кистью, указанной в параметре pBrush.
BOOL FillRgn(
CRgn* pRgn,
CBrush* pBrush);
Parameters
pRgn
Указатель на регион, который нужно заполнить. Координаты для заданного региона указываются в логических единицах.
pBrush
Определяет кисть, используемую для заполнения региона.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Кисть должна быть создана с помощью CBrush функций-членовCreateHatchBrush, CreatePatternBrushCreateSolidBrushили извлекатьсяGetStockObject.
Example
Пример см. в примере CRgn::CreateRoundRectRgn.
CDC::FillSolidRect
Вызовите эту функцию-член, чтобы заполнить заданный прямоугольник указанным сплошным цветом.
void FillSolidRect(
LPCRECT lpRect,
COLORREF clr);
void FillSolidRect(
int x,
int y,
int cx,
int cy,
COLORREF clr);
Parameters
lpRect
Указывает ограничивающий прямоугольник (в логических единицах). Можно передать указатель на RECT структуру данных или CRect объект для этого параметра.
clr Указывает цвет, используемый для заполнения прямоугольника.
x
Задает логическую координату x левого верхнего угла прямоугольника.
y
Задает логическую координату y верхнего левого угла прямоугольника назначения.
cx
Задает ширину прямоугольника.
cy
Задает высоту прямоугольника.
Remarks
FillSolidRectочень похож на ; однако использует только сплошные цвета (указанные CDC::FillRect параметром), в то время FillSolidRect как COLORREFпринимает кисть и, следовательно, FillRect можно использовать для заполнения прямоугольника сплошным цветом, дитерированного цвета, хэтчированных кистей или шаблона.
FillSolidRect обычно быстрее, чем FillRect.
Note
При вызове FillSolidRectцвет фона, который был установлен ранее с помощью SetBkColor, задается для цвета, указанного clr.
CDC::FlattenPath
Преобразует все кривые в пути, выбранном в текущем контексте устройства, и преобразует каждую кривую в последовательность строк.
BOOL FlattenPath();
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
CDC::FloodFill
Заполняет область поверхности отображения текущей кистью.
BOOL FloodFill(
int x,
int y,
COLORREF crColor);
Parameters
x
Задает логическую координату x точки, в которой начинается заполнение.
y
Указывает логическую координату y точки, в которой начинается заполнение.
crColor
Задает цвет границы.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае возвращается значение 0, если заполнение не удалось завершить, данный пункт имеет цвет границы, указанный crColorпараметром, или точка находится за пределами области вырезки.
Remarks
Предполагается, что область ограничена, как указано в параметре crColor. Функция FloodFill начинается в точке, указанной x и y продолжается во всех направлениях к цветовой границе.
Поддерживают функцию-член только контексты и устройства с памятью и устройства, поддерживающие технологию растрового FloodFill отображения. Сведения о возможности см. в RC_BITBLT функции-члене GetDeviceCaps .
Функция ExtFloodFill обеспечивает аналогичную возможность, но большую гибкость.
CDC::FrameRect
Рисует границу вокруг прямоугольника, указанного lpRectв .
void FrameRect(
LPCRECT lpRect,
CBrush* pBrush);
Parameters
lpRect
Указывает на RECT структуру или CRect объект, содержащий логические координаты левого и нижнего углов прямоугольника. Вы также можете передать CRect объект для этого параметра.
pBrush
Определяет кисть, используемую для обрамления прямоугольника.
Remarks
Функция использует заданную кисть для рисования границы. Ширина и высота границы всегда составляет 1 логическая единица.
Если координата прямоугольника bottom меньше или равна top, или right если меньше или равно left, прямоугольник не рисуется.
Граница, рисуемая FrameRect по краю, находится в той же позиции, что и граница, рисуемая Rectangle функцией-членом, используя те же координаты (если Rectangle используется перо, равное 1 логическому блоку). Интерьер прямоугольника не заполняется FrameRect.
CDC::FrameRgn
Рисует границу вокруг области, указанной с помощью кисти, указанной pRgn в параметре pBrush.
BOOL FrameRgn(
CRgn* pRgn,
CBrush* pBrush,
int nWidth,
int nHeight);
Parameters
pRgn
Указывает на объект, определяющий CRgn регион, который должен быть заключен в границу. Координаты для заданного региона указываются в логических единицах.
pBrush
Указывает на объект, определяющий CBrush кисть, используемую для рисования границы.
nWidth
Задает ширину границы в вертикальных штрихах кисти в единицах устройства.
nHeight
Задает высоту границы в горизонтальных штрихах кисти в единицах устройства.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Example
Пример см. в примере CRgn::CombineRgn.
CDC::FromHandle
Возвращает указатель на CDC объект при указании дескриптора контекста устройства.
static CDC* PASCAL FromHandle(HDC hDC);
Parameters
hDC
Содержит дескриптор контекста устройства Windows.
Return Value
Указатель может быть временным и не должен храниться за пределами немедленного использования.
Remarks
CDC Если объект не присоединен к дескриптору, создается и присоединяется временный CDC объект.
Example
Пример см. в примере CPrintDialog::GetPrinterDC.
CDC::GetArcDirection
Возвращает текущее направление дуги для контекста устройства.
int GetArcDirection() const;
Return Value
Указывает текущее направление дуги, если выполнено успешно. Ниже приведены допустимые возвращаемые значения:
AD_COUNTERCLOCKWISEДуги и прямоугольники, нарисованные счетчиком со стрелкой.AD_CLOCKWISE Arcsи прямоугольники, нарисованные по часовой стрелке.
Если возникает ошибка, возвращаемое значение равно нулю.
Remarks
Функции Arc и прямоугольника используют направление дуги.
CDC::GetAspectRatioFilter
Извлекает параметр для текущего фильтра пропорций.
CSize GetAspectRatioFilter() const;
Return Value
CSize Объект, представляющий пропорции, используемый текущим фильтром пропорций.
Remarks
Пропорции — это соотношение, сформированное шириной и высотой пикселя устройства. Сведения о пропорции устройства используются в создании, выборе и отображении шрифтов. Windows предоставляет специальный фильтр, фильтр пропорций для выбора шрифтов, предназначенных для определенного пропорции из всех доступных шрифтов. Фильтр использует пропорции, заданные SetMapperFlags функцией-членом.
CDC::GetBkColor
Возвращает текущий цвет фона.
COLORREF GetBkColor() const;
Return Value
Значение цвета RGB.
Remarks
Если фоновый режим имеет значение OPAQUE, система использует цвет фона для заполнения пробелов в стилях, пробелов между штриховками в кисти и фоном в ячейках символов. Система также использует цвет фона при преобразовании растровых изображений между контекстами цветов и монохромных устройств.
CDC::GetBkMode
Возвращает фоновый режим.
int GetBkMode() const;
Return Value
Текущий фоновый режим, который может быть OPAQUE или TRANSPARENT.
Remarks
В фоновом режиме определяется, удаляет ли система существующие цвета фона на поверхности рисования перед рисованием текста, штриховками или любым стилем пера, который не является сплошной линией.
CDC::GetBoundsRect
Возвращает текущий накопленный ограничивающий прямоугольник для указанного контекста устройства.
UINT GetBoundsRect(
LPRECT lpRectBounds,
UINT flags);
Parameters
lpRectBounds
Указывает на буфер, который получит текущий ограничивающий прямоугольник. Прямоугольник возвращается в логических координатах.
flags
Указывает, следует ли очистить ограничивающий прямоугольник после возврата. Этот параметр должен быть равен нулю или иметь следующее значение:
-
DCB_RESETПринудительно очищает ограничивающий прямоугольник после возвращения.
Return Value
Указывает текущее состояние ограничивающего прямоугольника, если функция выполнена успешно. Это может быть сочетание следующих значений:
DCB_ACCUMULATEПроисходит ограничивающее накопление прямоугольника.DCB_RESETОграничивающий прямоугольник пуст.DCB_SETОграничивающий прямоугольник не пуст.DCB_ENABLEОграничивающее накопление включено.DCB_DISABLEОграничивающее накопление отключено.
CDC::GetBrushOrg
Извлекает источник (в единицах устройства) кисти, выбранной в настоящее время для контекста устройства.
CPoint GetBrushOrg() const;
Return Value
Текущий источник кисти (в единицах устройства) в качестве CPoint объекта.
Remarks
Исходный источник кисти составляет (0,0) клиентской области. Возвращаемое значение указывает эту точку в единицах устройства относительно источника окна рабочего стола.
CDC::GetCharacterPlacement
Извлекает различные типы сведений о строке символов.
DWORD GetCharacterPlacement(
LPCTSTR lpString,
int nCount,
int nMaxExtent,
LPGCP_RESULTS lpResults,
DWORD dwFlags) const;
DWORD GetCharacterPlacement(
CString& str,
int nMaxExtent,
LPGCP_RESULTS lpResults,
DWORD dwFlags) const;
Parameters
lpString
Указатель на строку символа для обработки.
nCount
Указывает длину строки. Для версии ANSI это BYTE число и для функции Юникода это WORD число. Дополнительные сведения см. в разделе GetCharacterPlacement.
nMaxExtent
Указывает максимальную степень (в логических единицах), в которой обрабатывается строка. Символы, которые при обработке превышают эту степень, игнорируются. Вычисления для любых обязательных массивов упорядочивания или глифа применяются только к включенным символам. Этот параметр используется только в том случае, если GCP_MAXEXTENT значение указано в параметре dwFlags . Поскольку функция обрабатывает входную строку, каждый символ и его экстент добавляются в выходные данные, экстенты и другие массивы только в том случае, если общая степень еще не превысила максимальное значение. После достижения предела обработка остановится.
lpResults
Указатель на GCP_Results структуру, которая получает результаты функции.
dwFlags
Указывает, как обработать строку в необходимые массивы. Этот параметр может быть одним или несколькими значениями, перечисленными в dwFlags разделе раздела GetCharacterPlacement раздела.
str
Указатель на CString объект для обработки.
Return Value
Если функция выполнена успешно, возвращаемое значение равно ширине и высоте строки в логических единицах.
Если функция выполняется неудачно, возвращается нулевое значение.
Remarks
Эта функция-член эмулирует функциональные возможности функции функции GetCharacterPlacement, как описано в пакете SDK для Windows.
CDC::GetCharABCWidths
Извлекает ширину последовательных символов в указанном диапазоне из текущего шрифта TrueType.
BOOL GetCharABCWidths(
UINT nFirstChar,
UINT nLastChar,
LPABC lpabc) const;
BOOL GetCharABCWidths(
UINT nFirstChar,
UINT nLastChar,
LPABCFLOAT lpABCF) const;
Parameters
nFirstChar
Задает первый символ в диапазоне символов из текущего шрифта, для которого возвращаются ширины символов.
nLastChar
Задает последний символ в диапазоне символов из текущего шрифта, для которого возвращаются ширины символов.
lpabc
Указывает на массив структур, получающих ширину символов ABC при возврате функции. Этот массив должен содержать по крайней мере столько ABC структур, сколько символов в диапазоне, заданном nFirstChar и nLastChar параметрами.
lpABCF
Указывает на буфер, предоставленный приложением, массив структур для получения ширины символов ABCFLOAT при возврате функции. Ширины, возвращаемые этой функцией, находятся в формате с плавающей запятой IEEE.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Ширина возвращается в логических единицах. Эта функция успешно выполняется только с шрифтами TrueType.
Расстеризатор TrueType предоставляет интервал между символами ABC после выбора определенного размера точки. Интервал "A" — это расстояние, которое добавляется в текущее положение перед размещением глифа. Интервал "B" — это ширина черной части глифа. Интервал "C" добавляется в текущее положение, чтобы учесть пробел справа от глифа. Общая расширенная ширина присваивается A + B + C.
GetCharABCWidths Когда функция-член получает отрицательные ширины "A" или "C" для символа, этот символ включает подвесы или навесы.
Чтобы преобразовать ширину ABC в единицы конструктора шрифтов, приложение должно создать шрифт, высота которого (как указано в lfHeight элементе LOGFONT структуры) равна значению, хранящейся в ntmSizeEM элементе NEWTEXTMETRIC структуры. (Значение ntmSizeEM элемента можно получить, вызвав EnumFontFamilies функцию Windows.)
Ширина ABC символа по умолчанию используется для символов, которые находятся за пределами диапазона выбранного шрифта.
Чтобы получить ширину символов в шрифтах, отличных от TrueType, приложения должны использовать функцию GetCharWidth Windows.
CDC::GetCharABCWidthsI
Извлекает ширину в логических единицах последовательных индексов глифов в указанном диапазоне от текущего шрифта TrueType.
BOOL GetCharABCWidthsI(
UINT giFirst,
UINT cgi,
LPWORD pgi,
LPABC lpabc) const;
Parameters
giFirst
Задает первый глифовый индекс в группе последовательных индексов глифов из текущего шрифта. Этот параметр используется только в том случае, если pgi параметр имеет значение NULL.
cgi
Указывает количество глифовых индексов.
pgi
Указатель на массив, содержащий индексы глифов. Если значение равно NULL, giFirst вместо этого используется параметр. Параметр cgi задает количество индексов глифов в этом массиве.
lpabc
Указатель на массив структур, получающих ABC ширину символов. Этот массив должен содержать по крайней мере столько ABC структур, сколько имеются индексы глифов, указанные параметром cgi .
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Эта функция-член эмулирует функциональные возможности функции функции GetCharABCWidthsI, как описано в пакете SDK для Windows.
CDC::GetCharWidth
Извлекает ширину отдельных символов в последовательной группе символов из текущего шрифта, используя m_hAttribDCконтекст входного устройства.
BOOL GetCharWidth(
UINT nFirstChar,
UINT nLastChar,
LPINT lpBuffer) const;
BOOL GetCharWidth(
UINT nFirstChar,
UINT nLastChar,
float* lpFloatBuffer) const;
Parameters
nFirstChar
Задает первый символ в последовательной группе символов в текущем шрифте.
nLastChar
Задает последний символ в последовательной группе символов в текущем шрифте.
lpBuffer
Указывает на буфер, который получит значения ширины для последовательной группы символов в текущем шрифте.
lpFloatBuffer
Указывает на буфер для получения ширины символов. Возвращаемые ширины находятся в 32-разрядном формате с плавающей запятой IEEE. (Ширина измеряется вдоль базовой линии символов.)
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Например, если nFirstChar идентифицирует букву "a" и nLastChar идентифицирует букву "z", функция извлекает ширину всех строчных символов.
Функция сохраняет значения в буфере, на который указывает lpBuffer. Этот буфер должен быть достаточно большим, чтобы сохранить все ширины. То есть в приведенном примере должно быть не менее 26 записей.
Если символ в последовательной группе символов не существует в определенном шрифте, оно будет назначено значение ширины символа по умолчанию.
CDC::GetCharWidthI
Извлекает ширину в логических координатах последовательных индексов глифов в указанном диапазоне от текущего шрифта.
BOOL GetCharWidthI(
UINT giFirst,
UINT cgi,
LPWORD pgi,
LPINT lpBuffer) const;
Parameters
giFirst
Задает первый глифовый индекс в группе последовательных индексов глифов из текущего шрифта. Этот параметр используется только в том случае, если pgi параметр имеет значение NULL.
cgi
Указывает количество глифовых индексов.
pgi
Указатель на массив, содержащий индексы глифов. Если значение равно NULL, giFirst вместо этого используется параметр. Параметр cgi задает количество индексов глифов в этом массиве.
lpBuffer
Указатель на буфер, получающий ширину.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Эта функция-член эмулирует функциональные возможности функции функции GetCharWidthI, как описано в пакете SDK для Windows.
CDC::GetClipBox
Извлекает размеры жестко ограничивающего прямоугольника вокруг текущей границы обрезки.
virtual int GetClipBox(LPRECT lpRect) const;
Parameters
lpRect
Указывает на RECT структуру или CRect объект, который требуется получить размеры прямоугольника.
Return Value
Тип обрезки региона. В качестве такой точки может выступать любой из следующих вариантов:
COMPLEXREGIONОбласть вырезки имеет перекрывающиеся границы.ERRORНедопустимый контекст устройства.NULLREGIONОбласть вырезки пуста.SIMPLEREGIONОбласть вырезки не имеет перекрывающихся границ.
Remarks
Измерения копируются в буфер, на который указывает lpRect.
CDC::GetColorAdjustment
Извлекает значения корректировки цвета для контекста устройства.
BOOL GetColorAdjustment(LPCOLORADJUSTMENT lpColorAdjust) const;
Parameters
lpColorAdjust
Указывает на структуру данных для получения значений COLORADJUSTMENT корректировки цвета.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
CDC::GetCurrentBitmap
Возвращает указатель на текущий выбранный CBitmap объект.
CBitmap* GetCurrentBitmap() const;
Return Value
Указатель на CBitmap объект, если выполнен успешно; в противном случае NULL.
Remarks
Эта функция-член может возвращать временные объекты.
CDC::GetCurrentBrush
Возвращает указатель на текущий выбранный CBrush объект.
CBrush* GetCurrentBrush() const;
Return Value
Указатель на CBrush объект, если выполнен успешно; в противном случае NULL.
Remarks
Эта функция-член может возвращать временные объекты.
CDC::GetCurrentFont
Возвращает указатель на текущий выбранный CFont объект.
CFont* GetCurrentFont() const;
Return Value
Указатель на CFont объект, если выполнен успешно; в противном случае NULL.
Remarks
Эта функция-член может возвращать временные объекты.
CDC::GetCurrentPalette
Возвращает указатель на текущий выбранный CPalette объект.
CPalette* GetCurrentPalette() const;
Return Value
Указатель на CPalette объект, если выполнен успешно; в противном случае NULL.
Remarks
Эта функция-член может возвращать временные объекты.
CDC::GetCurrentPen
Возвращает указатель на текущий выбранный CPen объект.
CPen* GetCurrentPen() const;
Return Value
Указатель на CPen объект, если выполнен успешно; в противном случае NULL.
Remarks
Эта функция-член может возвращать временные объекты.
CDC::GetCurrentPosition
Извлекает текущую позицию (в логических координатах).
CPoint GetCurrentPosition() const;
Return Value
Текущая позиция в качестве CPoint объекта.
Remarks
Текущая позиция может быть задана MoveTo с помощью функции-члена.
CDC::GetDCBrushColor
Получает текущий цвет кисти.
COLORREF GetDCBrushColor() const;
Return Value
Если функция выполнена успешно, возвращаемое значение является COLORREF значением текущего цвета кисти.
Если функция завершается ошибкой, возвращается CLR_INVALIDзначение.
Remarks
Эта функция-член эмулирует функциональные возможности функции функции GetDCBrushColor, как описано в пакете SDK для Windows.
CDC::GetDCPenColor
Получает текущий цвет пера.
COLORREF GetDCPenColor() const;
Return Value
Если функция выполнена успешно, возвращаемое значение является COLORREF значением текущего цвета пера.
Если функция завершается ошибкой, возвращается CLR_INVALIDзначение.
Remarks
Эта функция-член использует функцию GetDCPenColorWin32, как описано в пакете SDK для Windows.
CDC::GetDeviceCaps
Извлекает широкий спектр сведений об устройстве с отображением.
int GetDeviceCaps(int nIndex) const;
Parameters
nIndex
Указывает тип возвращаемой информации. Ознакомьтесь GetDeviceCaps со списком значений в пакете SDK для Windows.
Return Value
Значение запрошенной возможности, если функция выполнена успешно.
Example
Пример см. в примере CPrintDialog::GetDefaults.
CDC::GetFontData
Извлекает данные метрик шрифта из масштабируемого файла шрифта.
DWORD GetFontData(
DWORD dwTable,
DWORD dwOffset,
LPVOID lpData,
DWORD cbData) const;
Parameters
dwTable
Указывает имя возвращаемой таблицы метрик. Этот параметр может быть одним из таблиц метрик, описанных в спецификации TrueType Font Files, опубликованной корпорацией Майкрософт. Если этот параметр равен 0, данные извлекаются начиная с начала файла шрифта.
dwOffset
Указывает смещение от начала таблицы, с которой начинается получение сведений. Если этот параметр равен 0, данные извлекаются начиная с начала таблицы, указанной параметром dwTable . Если это значение больше или равно размеру таблицы, GetFontData возвращается значение 0.
lpData
Указывает на буфер, который получит сведения о шрифте. Если это значение, NULLфункция возвращает размер буфера, необходимый для данных шрифта, указанных в параметре dwTable .
cbData
Указывает длину в байтах извлекаемой информации. Если этот параметр равен 0, возвращает размер данных, GetFontData указанных в параметре dwTable .
Return Value
Указывает количество байтов, возвращаемых в буфере, на которое указывает lpData , если функция выполнена успешно; в противном случае — значение -1.
Remarks
Извлекаемая информация определяется путем указания смещения в файл шрифта и длины возвращаемой информации.
Иногда приложение может использовать функцию-член для GetFontData сохранения шрифта TrueType с документом. Для этого приложение определяет, можно ли внедрить шрифт, а затем получить весь файл шрифта, указав значение 0 для dwTableпараметра dwOffsetи cbData параметров.
Приложения могут определить, можно ли внедрить шрифт, проверив otmfsType элемент OUTLINETEXTMETRIC структуры. Если задано значение 1 otmfsType бита, внедрение не допускается для шрифта. Если бит 1 ясно, шрифт может быть внедрен. Если задан бит 2, внедрение выполняется только для чтения.
Если приложение пытается использовать эту функцию для получения сведений для шрифта, отличного от TrueType, GetFontData функция-член возвращает -1.
CDC::GetFontLanguageInfo
Возвращает сведения о выбранном шрифте для указанного контекста отображения.
DWORD GetFontLanguageInfo() const;
Return Value
Возвращаемое значение определяет характеристики выбранного шрифта. Полный список возможных значений см. в разделе GetFontLanguageInfo.
Remarks
Эта функция-член эмулирует функциональные возможности функции функции GetFontLanguageInfo, как описано в пакете SDK для Windows.
CDC::GetGlyphOutline
Извлекает кривую контура или растровое изображение для символа структуры в текущем шрифте.
DWORD GetGlyphOutline(
UINT nChar,
UINT nFormat,
LPGLYPHMETRICS lpgm,
DWORD cbBuffer,
LPVOID lpBuffer,
const MAT2* lpmat2) const;
Parameters
nChar
Указывает символ, для которого возвращаются сведения.
nFormat
Указывает формат, в котором функция будет возвращать сведения. Это может быть одно из следующих значений или 0:
| Value | Meaning |
|---|---|
GGO_BITMAP |
Возвращает битовое изображение глифа. Когда функция возвращается, буфер, на который указывает lpBuffer буфер, содержит 1-битовое растровое изображение на пиксель, строки которого начинаются на границы двойных слов. |
GGO_NATIVE |
Возвращает точки данных кривой в собственном формате растризатора с помощью единиц устройства. Если это значение указано, любое преобразование, указанное в lpmat2 , игнорируется. |
Если значение nFormat равно 0, функция заполняет структуру GLYPHMETRICS , но не возвращает данные глифа.
lpgm
Указывает на GLYPHMETRICS структуру, описывающую размещение глифа в ячейке символа.
cbBuffer
Указывает размер буфера, в который функция копирует сведения о символе структуры. Если это значение равно 0, а nFormat параметр имеет GGO_BITMAP значение или GGO_NATIVE значения, функция возвращает требуемый размер буфера.
lpBuffer
Указывает на буфер, в который функция копирует сведения о символе структуры. Если nFormat задает GGO_NATIVE значение, данные копируются в виде TTPOLYGONHEADER и TTPOLYCURVE структурах. Если это значение имеет NULL значение или nFormatGGO_BITMAPGGO_NATIVE значение, функция возвращает требуемый размер буфера.
lpmat2
Указывает на MAT2 структуру, содержащую матрицу преобразования для символа. Этот параметр не может быть NULL, даже если GGO_NATIVE значение указано для nFormat.
Return Value
Размер буфера в байтах, необходимый для полученной информации, если cbBuffer значение равно 0 или lpBuffer равно NULL. В противном случае это положительное значение, если функция выполнена успешно или -1, если возникла ошибка.
Remarks
Приложение может повернуть символы, полученные в формате растрового изображения, указав матрицу преобразования 2-к-2 в структуре, на которую указывает lpmat2.
Контур глифа возвращается в виде ряда контуров. Каждый контур определяется структурой TTPOLYGONHEADER , за которой следует столько TTPOLYCURVE структур, сколько требуется для описания. Все точки возвращаются в виде POINTFX структур и представляют абсолютные позиции, а не относительные перемещения. Отправной точкой, заданной pfxStart членом структуры, является точка, с которой TTPOLYGONHEADER начинается контур. Следующие TTPOLYCURVE структуры могут быть либо записями polyline, либо записями сплайна. Полилайновые записи — это ряд точек; Линии, нарисованные между точками, описывают контур символа. Записи сплайна представляют квадратные кривые, используемые TrueType (т. е. квадратиками b-splines).
CDC::GetGraphicsMode
Извлекает текущий графический режим для указанного контекста устройства.
int GetGraphicsMode() const;
Return Value
Возвращает текущий графический режим при успешном выполнении. Список значений, возвращаемых этим методом, см. в разделе GetGraphicsMode.
Возвращает значение 0 при сбое.
Чтобы получить расширенные сведения об ошибке, вызовите функцию GetLastError.
Remarks
Этот метод упаковывает функцию GetGraphicsModeGDI Windows.
CDC::GetHalftoneBrush
Вызовите эту функцию-член, чтобы получить полутонную кисть.
static CBrush* PASCAL GetHalftoneBrush();
Return Value
Указатель на объект в случае успешного CBrush выполнения; в противном случае NULL.
Remarks
Полутонная кисть показывает пиксели, которые по-другому переднего плана и фоновые цвета для создания дитерированного шаблона. На следующей схеме показан пример дитерированного шаблона, созданного полутонной кистью:
На схеме показано, как цвет фона черного цвета и цвет переднего плана желтого цвета объединяются в шаблон, чередуя черные и желтые пиксели друг с другом, чтобы создать дитерированный росчерк пера.
CDC::GetKerningPairs
Извлекает пары кернинга символов для шрифта, выбранного в текущем контексте устройства.
int GetKerningPairs(
int nPairs,
LPKERNINGPAIR lpkrnpair) const;
Parameters
nPairs
Указывает количество структур, KERNINGPAIR на которые указывается lpkrnpair. Функция не будет копировать больше пар кернинга, чем указано.nPairs
lpkrnpair
Указывает на массив структур, получающих пары кернинга KERNINGPAIR при возврате функции. Этот массив должен содержать по крайней мере столько структур, сколько указано nPairs. Если этот параметр имеет значение NULL, функция возвращает общее количество пар кернинга для шрифта.
Return Value
Указывает количество полученных пар кернинга или общее количество пар кернинга в шрифте, если функция выполнена успешно. Ноль возвращается, если функция завершается ошибкой или для шрифта отсутствуют пары кернинга.
CDC::GetLayout
Вызовите эту функцию-член, чтобы определить макет текста и графики для контекста устройства, например принтера или метафайла.
DWORD GetLayout() const;
Return Value
В случае успешного выполнения флаги макета для текущего контекста устройства. В противном случае — GDI_ERROR. Для получения расширенных сведений об ошибке вызов GetLastError. Список флагов макета см. в разделе CDC::SetLayout.
Remarks
Макет по умолчанию слева направо.
CDC::GetMapMode
Извлекает текущий режим сопоставления.
int GetMapMode() const;
Return Value
Режим сопоставления.
Remarks
Описание режимов сопоставления см. в функции-члене SetMapMode .
Note
Если вы вызываете SetLayout изменение макета контроллера домена направо налево, SetLayout автоматически измените режим MM_ISOTROPICсопоставления на . Следовательно, любой последующий вызов GetMapMode возвращается MM_ISOTROPIC.
CDC::GetMiterLimit
Возвращает ограничение митер для контекста устройства.
float GetMiterLimit() const;
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Ограничение митер используется при рисовании геометрических линий с соединениями митера.
CDC::GetNearestColor
Возвращает сплошной цвет, который лучше всего соответствует указанному логическому цвету.
COLORREF GetNearestColor(COLORREF crColor) const;
Parameters
crColor
Указывает соответствующий цвет.
Return Value
Значение цвета RGB (красный, зеленый, синий), определяющее сплошной цвет, ближайший к crColor значению, которое может представлять устройство.
Remarks
Данное устройство должно иметь возможность представлять этот цвет.
CDC::GetOutlineTextMetrics
Извлекает сведения о метриках для шрифтов TrueType.
UINT GetOutlineTextMetrics(
UINT cbData,
LPOUTLINETEXTMETRIC lpotm) const;
Parameters
lpotm
Указывает на массив OUTLINETEXTMETRIC структур. Если этот параметр имеет значение NULL, функция возвращает размер буфера, необходимого для полученных данных метрик.
cbData
Задает размер буфера, в байтах, в котором возвращаются сведения.
lpotm
Указывает на структуру OUTLINETEXTMETRIC . Если этот параметр имеет значение NULL, функция возвращает размер буфера, необходимый для полученных сведений о метриках.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Структура OUTLINETEXTMETRIC содержит большую часть сведений о метриках шрифта, предоставляемых форматом TrueType, включая структуру TEXTMETRIC . Последние четыре члена OUTLINETEXTMETRIC структуры — это указатели на строки. Приложения должны выделять пространство для этих строк в дополнение к пространству, необходимому для других элементов. Так как в системе нет ограничений на размер строк, самый простой метод выделения памяти заключается в том, чтобы получить требуемый размер, указав ЗНАЧЕНИЕ NULL lpotm в первом вызове GetOutlineTextMetrics функции.
CDC::GetOutputCharWidth
Использует контекст m_hDCвыходного устройства и извлекает ширину отдельных символов в последовательной группе символов из текущего шрифта.
BOOL GetOutputCharWidth(
UINT nFirstChar,
UINT nLastChar,
LPINT lpBuffer) const;
Parameters
nFirstChar
Задает первый символ в последовательной группе символов в текущем шрифте.
nLastChar
Задает последний символ в последовательной группе символов в текущем шрифте.
lpBuffer
Указывает на буфер, который получит значения ширины для последовательной группы символов в текущем шрифте.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Например, если nFirstChar идентифицирует букву "a" и nLastChar идентифицирует букву "z", функция извлекает ширину всех строчных символов.
Функция сохраняет значения в буфере, на который указывает lpBuffer. Этот буфер должен быть достаточно большим, чтобы сохранить все ширины; То есть в приведенном примере должно быть не менее 26 записей.
Если символ в последовательной группе символов не существует в определенном шрифте, оно будет назначено значение ширины символа по умолчанию.
CDC::GetOutputTabbedTextExtent
Вызовите эту функцию-член, чтобы вычислить ширину и высоту символьной строки с помощью m_hDCконтекста выходного устройства.
CSize GetOutputTabbedTextExtent(
LPCTSTR lpszString,
int nCount,
int nTabPositions,
LPINT lpnTabStopPositions) const;
CSize GetOutputTabbedTextExtent(
const CString& str,
int nTabPositions,
LPINT lpnTabStopPositions) const;
Parameters
lpszString
Указывает на символьную строку для измерения. Вы также можете передать CString объект для этого параметра.
nCount
Указывает длину строки , на которую указывает lpszString.
nTabPositions
Указывает количество позиций табуляции в массиве, на которое указывает lpnTabStopPositions.
lpnTabStopPositions
Указывает на массив целых чисел, содержащих позиции табуляции в логических единицах. Остановки табуляции должны быть отсортированы по возрастанию порядка; Наименьшее x-значение должно быть первым элементом в массиве. Вкладки "Назад" не допускаются.
str
CString Объект, содержащий указанные символы для измерения.
Return Value
Размеры строки (в логических единицах) в объекте CSize .
Remarks
Если строка содержит один или несколько символов табуляции, ширина строки зависит от табуляции, указанной в параметре lpnTabStopPositions. Функция использует выбранный в данный момент шрифт для вычисления измерений строки.
Текущий регион вырезки не смещает ширину и высоту, возвращаемую функцией GetOutputTabbedTextExtent .
Так как некоторые устройства не помещают символы в обычные массивы ячеек (т. е. они кернируют символы), сумма экстентов символов в строке может не совпадать с степенью строки.
Если nTabPositions значение равно 0 и lpnTabStopPositionsNULLимеет значение, вкладки расширяются до восьми средних ширин символов. Если nTabPositions значение равно 1, точки табуляции будут разделены расстоянием, указанным первым значением в массиве, в котором lpnTabStopPositions указываются точки. Если lpnTabStopPositions указывает на несколько значений, точка табуляции устанавливается для каждого значения в массиве до числа, указанного в nTabPositionsпараметре.
CDC::GetOutputTextExtent
Вызовите эту функцию-член, чтобы использовать контекст выходного устройства, m_hDCа также вычислить ширину и высоту строки текста с помощью текущего шрифта.
CSize GetOutputTextExtent(
LPCTSTR lpszString,
int nCount) const;
CSize GetOutputTextExtent(const CString& str) const;
Parameters
lpszString
Указывает на строку символов. Вы также можете передать CString объект для этого параметра.
nCount
Указывает длину строки , на которую указывает lpszString.
str
CString Объект, содержащий указанные символы для измерения.
Return Value
Измерения строки (в логических единицах), возвращаемые в CSize объекте.
Remarks
Текущий регион вырезки не влияет на ширину и высоту, возвращаемую GetOutputTextExtent.
Так как некоторые устройства не помещают символы в обычные массивы ячеек (т. е. они выполняют кернинг), сумма экстентов символов в строке может не совпадать с степенью строки.
CDC::GetOutputTextMetrics
Извлекает метрики текущего шрифта с помощью m_hDCконтекста выходного устройства.
BOOL GetOutputTextMetrics(LPTEXTMETRIC lpMetrics) const;
Parameters
lpMetrics
Указывает на структуру TEXTMETRIC , которая получает метрики.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
CDC::GetPath
Извлекает координаты, определяющие конечные точки линий и контрольные точки кривых, найденных в пути, выбранном в контексте устройства.
int GetPath(
LPPOINT lpPoints,
LPBYTE lpTypes,
int nCount) const;
Parameters
lpPoints
Указывает на массив POINT структур данных или CPoint объектов, где размещаются конечные точки линии и точки управления кривой.
lpTypes
Указывает на массив байтов, где размещаются типы вершин. Значения являются одним из следующих значений:
PT_MOVETOУказывает, что соответствующая точка вlpPointsначале разрозначного рисунка.PT_LINETOУказывает, что предыдущая точка и соответствующая точкаlpPointsявляются конечными точками строки.PT_BEZIERTOУказывает, что соответствующая точка находится вlpPointsконтрольной точке или конечной точке для кривой Bzier.
PT_BEZIERTO типы всегда происходят в наборах из трех. Точка в пути непосредственно перед ними определяет начальную точку для кривой Bzier. Первые две PT_BEZIERTO точки являются контрольными точками, а третья PT_BEZIERTO — конечная точка (если жестко закодирована).
Тип PT_LINETO или тип можно объединить со следующим флагом (с помощью побитового оператора PT_BEZIERTO), чтобы указать, что соответствующая точка является последней точкой на рисунке и что рисунок должен быть закрыт:
-
PT_CLOSEFIGUREУказывает, что рисунок автоматически закрывается после рисования соответствующей линии или кривой. Рисунок закрывается путем рисования линии из конечной точки линии или кривой в точку, соответствующую последнейPT_MOVETO.
nCount
Указывает общее количество POINT структур данных, которые могут быть помещены в lpPoints массив. Это значение должно совпадать с количеством байтов, которые могут быть помещены в lpTypes массив.
Return Value
nCount Если параметр является ненулевой, количество перечисленных точек. Если nCount значение равно 0, общее количество точек в пути (и GetPath ничего не записывает в буферы). Если nCount значение ненулевого значения меньше количества точек в пути, возвращаемое значение равно -1.
Remarks
Контекст устройства должен содержать закрытый путь. Точки пути возвращаются в логических координатах. Точки хранятся в пути в координатах устройства, поэтому GetPath изменяет точки с координат устройства на логические координаты с помощью обратного текущего преобразования. Функция-член FlattenPath может быть вызвана до GetPath, чтобы преобразовать все кривые в пути в сегменты линий.
Example
Пример см. в примере CDC::BeginPath.
CDC::GetPixel
Извлекает значение цвета RGB пикселя в точке, указанной x и y.
COLORREF GetPixel(
int x,
int y) const;
COLORREF GetPixel(POINT point) const;
Parameters
x
Указывает логическую координату x точки для проверки.
y
Указывает логическую координату точки для проверки.
point
Задает логические координаты x-и y точки для проверки.
Return Value
Для любой версии функции значение цвета RGB для цвета заданной точки. Это значение -1, если координаты не указывают точку в области вырезки.
Remarks
Точка должна находиться в регионе вырезки. Если точка отсутствует в области вырезки, функция не имеет эффекта и возвращает -1.
Не все устройства поддерживают функцию GetPixel. Дополнительные сведения см. в RC_BITBLT разделе о возможности растра в функции-члене GetDeviceCaps .
Функция-член GetPixel имеет две формы. Первый принимает два значения координат; второй принимает структуру POINT или CPoint объект.
CDC::GetPolyFillMode
Извлекает текущий режим заполнения многоугольников.
int GetPolyFillMode() const;
Return Value
Текущий многоугольник или , ALTERNATEWINDINGесли функция выполнена успешно.
Remarks
Сведения о режимах заполнения многоугольников см. в SetPolyFillMode функции-члене.
CDC::GetROP2
Извлекает текущий режим рисования.
int GetROP2() const;
Return Value
Режим рисования. Список значений режима рисования см. в функции-члене SetROP2 .
Remarks
Режим рисования указывает, как цвета пера и интерьер заполненных объектов объединяются с цветом, уже на поверхности отображения.
CDC::GetSafeHdc
Вызовите эту функцию-член, чтобы получить m_hDC, контекст выходного устройства.
HDC GetSafeHdc() const;
Return Value
Дескриптор контекста устройства.
Remarks
Эта функция-член также работает с указателями NULL.
CDC::GetStretchBltMode
Извлекает текущий режим растягивания растровых изображений.
int GetStretchBltMode() const;
Return Value
Возвращаемое значение указывает текущий режим растягивания растровых изображений ( STRETCH_ANDSCANSSTRETCH_DELETESCANSили STRETCH_ORSCANS ), если функция выполнена успешно.
Remarks
Режим растягивания растровых карт определяет, как данные удаляются из растровых изображений, растянутых или сжатых функцией-членом StretchBlt .
STRETCH_ANDSCANS Как STRETCH_ORSCANS правило, режимы используются для сохранения пикселей переднего плана в монохромных растровых изображениях. Обычно этот STRETCH_DELETESCANS режим используется для сохранения цвета в растровых изображениях цвета.
CDC::GetTabbedTextExtent
Вызовите эту функцию-член, чтобы вычислить ширину и высоту символьной строки с помощью m_hAttribDCконтекста устройства атрибута.
CSize GetTabbedTextExtent(
LPCTSTR lpszString,
int nCount,
int nTabPositions,
LPINT lpnTabStopPositions) const;
CSize GetTabbedTextExtent(
const CString& str,
int nTabPositions,
LPINT lpnTabStopPositions) const;
Parameters
lpszString
Указывает на символьную строку. Вы также можете передать CString объект для этого параметра.
nCount
Указывает длину строки , на которую указывает lpszString.
nTabPositions
Указывает количество позиций табуляции в массиве, на которое указывает lpnTabStopPositions.
lpnTabStopPositions
Указывает на массив целых чисел, содержащих позиции табуляции в логических единицах. Остановки табуляции должны быть отсортированы по возрастанию порядка; Наименьшее x-значение должно быть первым элементом в массиве. Вкладки "Назад" не допускаются.
str
CString Объект, содержащий указанные символы для рисования.
Return Value
Размеры строки (в логических единицах) в объекте CSize .
Remarks
Если строка содержит один или несколько символов табуляции, ширина строки зависит от табуляции, указанной в параметре lpnTabStopPositions. Функция использует выбранный в данный момент шрифт для вычисления измерений строки.
Текущий регион вырезки не смещает ширину и высоту, возвращаемую функцией GetTabbedTextExtent .
Так как некоторые устройства не помещают символы в обычные массивы ячеек (т. е. они кернируют символы), сумма экстентов символов в строке может не совпадать с степенью строки.
Если nTabPositions значение равно 0 и lpnTabStopPositionsNULLимеет значение, вкладки расширяются до восьми раз средней ширины символов. Если nTabPositions значение равно 1, точки табуляции будут разделены расстоянием, указанным первым значением в массиве, в котором lpnTabStopPositions указываются точки. Если lpnTabStopPositions указывает на несколько значений, точка табуляции устанавливается для каждого значения в массиве до числа, указанного в nTabPositionsпараметре.
CDC::GetTextAlign
Извлекает состояние флагов выравнивания текста для контекста устройства.
UINT GetTextAlign() const;
Return Value
Состояние флагов выравнивания текста. Возвращаемое значение является одним или несколькими из следующих значений:
TA_BASELINEУказывает выравнивание оси x и базовых показателей выбранного шрифта в ограничивающем прямоугольнике.TA_BOTTOMУказывает выравнивание оси x и нижней части ограничивающего прямоугольника.TA_CENTERУказывает выравнивание оси Y и центра ограничивающего прямоугольника.TA_LEFTУказывает выравнивание оси Y и левой стороны ограничивающего прямоугольника.TA_NOUPDATECPУказывает, что текущая позиция не обновляется.TA_RIGHTУказывает выравнивание оси Y и правой стороны ограничивающего прямоугольника.TA_TOPУказывает выравнивание оси x и верхней части ограничивающего прямоугольника.TA_UPDATECPУказывает, что текущая позиция обновляется.
Remarks
Флаги выравнивания текста определяют, как TextOutExtTextOut функции-члены выравнивают строку текста относительно начальной точки строки. Флаги выравнивания текста не обязательно одно битовые флаги и могут быть равны 0. Чтобы проверить, задан ли флаг, приложение должно выполнить следующие действия:
Примените побитовый оператор OR (
|) к флагу и его связанным флагам, сгруппированные следующим образом:TA_LEFT,TA_CENTERиTA_RIGHTTA_BASELINE,TA_BOTTOMиTA_TOPTA_NOUPDATECPиTA_UPDATECP.
Примените побитовый оператор C++ AND (
&) к результату и возвращаемогоGetTextAlignзначения.Проверьте равенство этого результата и флага.
CDC::GetTextCharacterExtra
Извлекает текущий параметр для количества интервалов между диаграммами.
int GetTextCharacterExtra() const;
Return Value
Объем интервала между диаграммами.
Remarks
GDI добавляет этот интервал к каждому символу, включая символы останова, при записи строки текста в контекст устройства.
Значение по умолчанию для интервала между диаграммами равно 0.
CDC::GetTextColor
Извлекает текущий цвет текста.
COLORREF GetTextColor() const;
Return Value
Текущий цвет текста в качестве значения цвета RGB.
Remarks
Цвет текста — это цвет переднего плана символов, рисуемых с помощью функций TextOutэлементов элемента GDI для вывода текста , ExtTextOutи TabbedTextOut.
CDC::GetTextExtent
Вызовите эту функцию-член, чтобы вычислить ширину и высоту строки текста с помощью текущего шрифта для определения измерений.
CSize GetTextExtent(
LPCTSTR lpszString,
int nCount) const;
CSize GetTextExtent(const CString& str) const;
Parameters
lpszString
Указывает на строку символов. Вы также можете передать CString объект для этого параметра.
nCount
Указывает количество знаков в строке.
str
CString Объект, содержащий указанные символы.
Return Value
Размеры строки (в логических единицах) в объекте CSize .
Remarks
Сведения извлекаются из m_hAttribDCконтекста устройства атрибута.
По умолчанию предполагается, что текст, для которого он извлекает измерение, GetTextExtent устанавливается вдоль горизонтальной линии (т. е. escapement равно 0). При создании шрифта, указывающего ненулевое escapement, необходимо явно преобразовать угол текста, чтобы получить размеры строки.
Текущий регион вырезки не влияет на ширину и высоту, возвращаемую GetTextExtent.
Так как некоторые устройства не помещают символы в обычные массивы ячеек (т. е. они выполняют кернинг), сумма экстентов символов в строке может не совпадать с степенью строки.
CDC::GetTextExtentExPointI
Извлекает количество символов в указанной строке, которая будет соответствовать заданному пространству и заполняет массив экстентом текста для каждого из этих символов.
BOOL GetTextExtentExPointI(
LPWORD pgiIn,
int cgi,
int nMaxExtent,
LPINT lpnFit,
LPINT alpDx,
LPSIZE lpSize) const;
Parameters
pgiIn
Указатель на массив глифовых индексов, для которых извлекаются экстенты.
cgi
Указывает количество глифов в массиве, на которое указывает pgiIn.
nMaxExtent
Указывает максимальную допустимую ширину в логических единицах форматируемой строки.
lpnFit
Указатель на целое число, которое получает количество максимальное число символов, которое будет помещаться в пространство, указанное в nMaxExtentполе. В противном lpnFit случае NULLnMaxExtentигнорируется.
alpDx
Указатель на массив целых чисел, получающих частичные глифы. Каждый элемент в массиве дает расстояние в логических единицах между началом массива индексов глифов и одним из глифов, которые помещаются в пространство, указанное в nMaxExtentполе. Хотя этот массив должен содержать по крайней мере столько элементов, сколько индексов глифов, указанных в cgiпараметре, функция заполняет массив экстентами только для сколько глифовых индексов, как указано в lpnFit. Если lpnDx это NULLтак, функция не вычисляет частичную ширину строк.
lpSize
Указатель на SIZE структуру, которая получает измерения массива индексов глифов в логических единицах. Это значение не может быть равно NULL.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Эта функция-член эмулирует функциональные возможности функции функции GetTextExtentExPointI, как описано в пакете SDK для Windows.
CDC::GetTextExtentPointI
Извлекает ширину и высоту указанного массива глифовых индексов.
BOOL GetTextExtentPointI(
LPWORD pgiIn,
int cgi,
LPSIZE lpSize) const;
Parameters
pgiIn
Указатель на массив глифовых индексов, для которых извлекаются экстенты.
cgi
Указывает количество глифов в массиве, на которое указывает pgiIn.
lpSize
Указатель на SIZE структуру, которая получает измерения массива индексов глифов в логических единицах. Это значение не может быть равно NULL.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Эта функция-член эмулирует функциональные возможности функции функции GetTextExtentPointI, как описано в пакете SDK для Windows.
CDC::GetTextFace
Вызовите эту функцию-член, чтобы скопировать имя шрифта текущего шрифта в буфер.
int GetTextFace(
int nCount,
LPTSTR lpszFacename) const;
int GetTextFace(CString& rString) const;
Parameters
nCount
Задает размер буфера (в байтах). Если имя шрифта больше числа байтов, указанного этим параметром, имя усечено.
lpszFacename
Указывает на буфер для имени шрифта.
rString
Ссылка на объект CString.
Return Value
Число байтов, скопированных в буфер, не включая завершающий символ NULL. Если возникает ошибка, это значение 0.
Remarks
Имя шрифта копируется в виде строки, завершаемой значением NULL.
CDC::GetTextMetrics
Извлекает метрики для текущего шрифта с помощью контекста устройства атрибута.
BOOL GetTextMetrics(LPTEXTMETRIC lpMetrics) const;
Parameters
lpMetrics
Указывает на структуру TEXTMETRIC , которая получает метрики.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
CDC::GetViewportExt
Извлекает x-и y-экстенты окна просмотра контекста устройства.
CSize GetViewportExt() const;
Return Value
X-и y-экстенты (в единицах устройства) в качестве CSize объекта.
CDC::GetViewportOrg
Извлекает координаты x-и y источника окна просмотра, связанного с контекстом устройства.
CPoint GetViewportOrg() const;
Return Value
Источник окна просмотра (в координатах устройства) в качестве CPoint объекта.
CDC::GetWindow
Возвращает окно, связанное с контекстом устройства отображения.
CWnd* GetWindow() const;
Return Value
Указатель на объект в случае успешного CWnd выполнения; в противном случае NULL.
Remarks
Это расширенная функция. Например, эта функция-член может не возвращать окно представления при печати или предварительном просмотре. Он всегда возвращает окно, связанное с выходными данными. Выходные функции, использующие заданный контроллер домена в этом окне.
CDC::GetWindowExt
Извлекает x-и y-экстенты окна, связанного с контекстом устройства.
CSize GetWindowExt() const;
Return Value
Экстенты x и y (в логических единицах) в качестве CSize объекта.
CDC::GetWindowOrg
Извлекает координаты x-и y источника окна, связанного с контекстом устройства.
CPoint GetWindowOrg() const;
Return Value
Источник окна (в логических координатах) в качестве CPoint объекта.
CDC::GetWorldTransform
Извлекает текущее преобразование пространства мира в пространство страницы.
BOOL GetWorldTransform(XFORM& rXform) const;
Parameters
rXform
Ссылка на структуру, которая получает текущее XFORM пространство в пространстве страницы.
Return Value
Возвращает ненулевое значение при успешном выполнении.
Возвращает значение 0 при сбое.
Чтобы получить расширенные сведения об ошибке, вызовите функцию GetLastError.
Remarks
Этот метод упаковывает функцию GetWorldTransformGDI Windows.
CDC::GradientFill
Вызовите эту функцию-член, чтобы заполнить прямоугольник и треугольники структуры цветом, который плавно исчезает с одной стороны к другой.
BOOL GradientFill(
TRIVERTEX* pVertices,
ULONG nVertices,
void* pMesh,
ULONG nMeshElements,
DWORD dwMode);
Parameters
pVertices
Указатель на массив TRIVERTEX структур, которые определяют вершину треугольника.
nVertices
Число вершин.
pMesh
Массив структур в режиме треугольника GRADIENT_TRIANGLEGRADIENT_RECT или массив структур в прямоугольном режиме.
nMeshElements
Количество элементов (треугольников или прямоугольников) в pMesh.
dwMode
Задает режим градиентной заливки. Список возможных значений см GradientFill . в пакете SDK для Windows.
Return Value
Значение TRUE в случае успешного выполнения; в противном случае — значение FALSE.
Remarks
Дополнительные сведения см GradientFill . в пакете SDK для Windows.
CDC::GrayString
Рисует неактивный (серый) текст в заданном расположении, записывая текст в растровом рисунке памяти, тем самым отмеряя растровое изображение, а затем копируя растровое изображение на экран.
virtual BOOL GrayString(
CBrush* pBrush,
BOOL (CALLBACK* lpfnOutput)(
HDC,
LPARAM,
int),
LPARAM lpData,
int nCount,
int x,
int y,
int nWidth,
int nHeight);
Parameters
pBrush
Идентифицирует кисть, которая будет использоваться для тумнения (серый цвет).
lpfnOutput
Указывает адрес экземпляра процедуры для функции обратного вызова, предоставленной приложением, которая будет нарисовывать строку. Дополнительные сведения см. в описании функции обратного вызова Windows.OutputFunc Если этот параметр имеет значение NULL, система использует функцию Windows TextOut для рисования строки и lpData предполагается, что это длинный указатель на строку символов, которая будет выводиться.
lpData
Указывает далекое указатель на данные, передаваемые в выходную функцию. Если lpfnOutput это NULLтак, lpData должен быть длинным указателем на строку, которая должна быть выходными.
nCount
Указывает количество символов, которые должны быть выходными. Если этот параметр равен 0, GrayString вычисляет длину строки (если lpData это указатель на строку). Если nCount значение равно 1 и функция, на которую указывает lpfnOutput значение 0, изображение отображается, но не отключено.
x
Задает логическую координату x начальной позиции прямоугольника, которая заключает строку.
y
Задает логическую координату Y начальной позиции прямоугольника, заключающей строку.
nWidth
Задает ширину (в логических единицах) прямоугольника, заключающего строку. Если nWidth значение равно 0, GrayString вычисляет ширину области, предполагая lpData , что это указатель на строку.
nHeight
Указывает высоту (в логических единицах) прямоугольника, заключающего строку. Если nHeight значение равно 0, GrayString вычисляет высоту области, предполагая lpData , что это указатель на строку.
Return Value
Ненулевое значение, если строка рисуется, или 0, если TextOut функция или функция, предоставляемая приложением выходная функция, возвращала 0, или если недостаточно памяти для создания растрового изображения памяти для уменьшения размеров памяти.
Remarks
Функция вымевает текст независимо от выбранной кисти и фона. Функция-член GrayString использует выбранный в данный момент шрифт. Перед MM_TEXT использованием этой функции необходимо выбрать режим сопоставления.
Приложение может нарисовать неактивные (серые) строки на устройствах, поддерживающих сплошной серый цвет, не вызывая функцию-член GrayString . Системный цвет — это сплошной серый цвет COLOR_GRAYTEXT системы, используемый для рисования отключенного текста. Приложение может вызвать GetSysColor функцию Windows, чтобы получить значение COLOR_GRAYTEXTцвета. Если цвет отличается от 0 (черный), приложение может вызвать SetTextColor функцию-член, чтобы задать цвет текста для значения цвета, а затем нарисовать строку напрямую. Если извлеченный цвет является черным, приложение должно вызвать GrayString тусклый (серый) текст.
Если lpfnOutput это NULLтак, GDI использует функцию Windows TextOut и lpData предполагается, что он является гораздо указателем на символ, который будет выводиться. Если выходные данные символов не могут обрабатываться TextOut функцией-членом (например, строка хранится в виде растрового изображения), приложение должно предоставить собственную выходную функцию.
Все функции обратного вызова должны перехватывать исключения Microsoft Foundation перед возвращением в Windows, так как исключения нельзя создавать через границы обратного вызова. Дополнительные сведения об исключениях см. в статье "Исключения".
Функция обратного GrayString вызова, переданная для __stdcall использования соглашения о вызовах, должна экспортироваться с __declspecпомощью .
Когда платформа находится в режиме предварительной GrayString версии, вызов функции-члена преобразуется в вызовTextOut, а функция обратного вызова не вызывается.
CDC::HIMETRICtoDP
Эта функция используется при преобразовании HIMETRIC размеров из OLE в пиксели.
void HIMETRICtoDP(LPSIZE lpSize) const;
Parameters
lpSize
Указывает на структуру SIZE или CSize объект.
Remarks
Если режим сопоставления объекта контекста устройства имеет MM_LOENGLISHзначение , MM_HIENGLISHMM_LOMETRIC или MM_HIMETRICпреобразование основано на количестве пикселей на физическом дюйме. Если режим сопоставления является одним из других неократных режимов (например, MM_TEXT), преобразование основано на количестве пикселей в логическом дюйме.
CDC::HIMETRICtoLP
Вызовите эту функцию для преобразования HIMETRIC единиц в логические единицы.
void HIMETRICtoLP(LPSIZE lpSize) const;
Parameters
lpSize
Указывает на структуру SIZE или CSize объект.
Remarks
Используйте эту функцию при получении HIMETRIC размеров из OLE и хотите преобразовать их в естественный режим сопоставления приложения.
Преобразование выполняется путем первого преобразования HIMETRIC единиц в пиксели и последующего преобразования этих единиц в логические единицы с помощью текущих единиц сопоставления контекста устройства. Обратите внимание, что экстенты окна устройства и окна просмотра повлияют на результат.
CDC::IntersectClipRect
Создает новую область вырезки путем формирования пересечения текущего региона и прямоугольника, указанного x1в , y1x2и y2.
int IntersectClipRect(
int x1,
int y1,
int x2,
int y2);
int IntersectClipRect(LPCRECT lpRect);
Parameters
x1
Задает логическую координату x левого верхнего угла прямоугольника.
y1
Задает логическую координату Y верхнего левого угла прямоугольника.
x2
Задает логическую координату x правого нижнего угла прямоугольника.
y2
Задает логическую координату y правого нижнего угла прямоугольника.
lpRect
Задает прямоугольник. Для этого параметра можно передать CRect объект или указатель на структуру RECT .
Return Value
Новый тип вырезки региона. Это может быть любое из следующих значений:
COMPLEXREGIONНовый регион вырезки имеет перекрывающиеся границы.ERRORНедопустимый контекст устройства.NULLREGIONНовая область вырезки пуста.SIMPLEREGIONНовый регион вырезки не имеет перекрывающихся границ.
Remarks
GDI клипирует все последующие выходные данные, которые будут соответствовать новой границе. Ширина и высота не должны превышать 32 767.
CDC::InvertRect
Инвертирует содержимое заданного прямоугольника.
void InvertRect(LPCRECT lpRect);
Parameters
lpRect
Указывает на RECT то, что содержит логические координаты прямоугольника, которые необходимо инвертировать. Вы также можете передать CRect объект для этого параметра.
Remarks
Инверсия — это логическая операция NOT и перевернутые биты каждого пикселя. При монохромном отображении функция делает белые пиксели черными и черными пикселями белыми. При отображении цвета инверсия зависит от того, как создаются цвета для отображения. При вызове InvertRect дважды с одинаковым прямоугольником экран восстанавливается до предыдущих цветов.
Если прямоугольник пуст, ничего не рисуется.
Example
void CDCView::DoInvertRect(CDC *pDC)
{
// invert rect from 20,20 to 50,50
CRect rect(20, 20, 50, 50);
pDC->InvertRect(rect);
// inverting again restores to normal
::Sleep(1000);
pDC->InvertRect(rect);
}
CDC::InvertRgn
Инвертирует цвета в регионе, заданном pRgn.
BOOL InvertRgn(CRgn* pRgn);
Parameters
pRgn
Идентифицирует регион, который необходимо изменить. Координаты для региона указываются в логических единицах.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
При монохромном отображении функция делает белые пиксели черными и черными пикселями белыми. При отображении цвета инверсия зависит от того, как создаются цвета для отображения.
CDC::IsPrinting
Определяет, используется ли контекст устройства для печати.
BOOL IsPrinting() const;
Return Value
Ненулевое CDC значение, если объект является контроллером домена принтера; в противном случае — значение 0.
CDC::LineTo
Рисует линию от текущей позиции до, но не включая, точку, указанную x и y (или point).
BOOL LineTo(
int x,
int y);
BOOL LineTo(POINT point);
Parameters
x
Задает логическую координату x конечной точки для строки.
y
Указывает логическую координату y конечной точки для строки.
point
Указывает конечную точку для строки. Для этого параметра можно передать структуру POINTCPoint или объект.
Return Value
Ненулевое значение, если линия рисуется; в противном случае — 0.
Remarks
Линия рисуется с выбранным пером. Текущая позиция имеет xзначение , y или значение point.
Example
Пример см. в примере CRect::CenterPoint.
CDC::LPtoDP
Преобразует логические единицы в единицы устройства.
void LPtoDP(
LPPOINT lpPoints,
int nCount = 1) const;
void LPtoDP(LPRECT lpRect) const;
void LPtoDP(LPSIZE lpSize) const;
Parameters
lpPoints
Указывает на массив точек. Каждая точка в массиве — это POINT структура или CPoint объект.
nCount
Количество точек в массиве.
lpRect
Указывает на структуру RECTCRect или объект. Этот параметр используется для общего случая сопоставления прямоугольника из логических единиц устройств.
lpSize
Указывает на структуру SIZECSize или объект.
Remarks
Функция сопоставляет координаты каждой точки или измерения размера из логической системы координат GDI в систему координат устройства. Преобразование зависит от текущего режима сопоставления и параметров источников и экстентов окна устройства и окна просмотра.
Координаты x- и y точек — 2-байтовые целые числа со знаком в диапазоне –32 768–32 767. В случаях, когда режим сопоставления приведет к значению, превышающим эти ограничения, система задает значения 32 768 и 32 767 соответственно.
CDC::LPtoHIMETRIC
Вызовите эту функцию для преобразования логических единиц в HIMETRIC единицы.
void LPtoHIMETRIC(LPSIZE lpSize) const;
Parameters
lpSize
Указывает на структуру SIZECSize или объект.
Remarks
Используйте эту функцию при добавлении HIMETRIC размеров в OLE, преобразовывая из естественного режима сопоставления приложения. Экстенты окна устройства и окна просмотра повлияют на результат.
Преобразование выполняется путем первого преобразования логических единиц в пиксели с помощью текущих единиц сопоставления контекста устройства, а затем преобразования этих единиц в HIMETRIC единицы.
CDC::m_hAttribDC
Контекст устройства атрибута для этого CDC объекта.
HDC m_hAttribDC;
Remarks
По умолчанию этот контекст устройства равен m_hDC. Как правило, вызовы GDI, запрашивающие сведения из контекста устройства, CDC направляются в m_hAttribDC.
CDC Дополнительные сведения об использовании этих двух контекстов устройств см. в описании класса.
CDC::m_hDC
Контекст выходного устройства для этого CDC объекта.
HDC m_hDC;
Remarks
По умолчанию равно m_hDCдругому m_hAttribDC контексту CDCустройства. Как правило, вызовы GDI, создающие выходные CDC данные, m_hDC переходят в контекст устройства. Вы можете инициализировать m_hDC и m_hAttribDC указать на разные устройства.
CDC Дополнительные сведения об использовании этих двух контекстов устройств см. в описании класса.
CDC::MaskBlt
Объединяет данные цвета для исходных и целевых растровых изображений с помощью заданной операции маски и растра.
BOOL MaskBlt(
int x,
int y,
int nWidth,
int nHeight,
CDC* pSrcDC,
int xSrc,
int ySrc,
CBitmap& maskBitmap,
int xMask,
int yMask,
DWORD dwRop);
Parameters
x
Задает логическую координату x левого верхнего угла прямоугольника назначения.
y
Задает логическую координату y верхнего левого угла прямоугольника назначения.
nWidth
Задает ширину в логических единицах целевого прямоугольника и исходного растрового изображения.
nHeight
Задает высоту в логических единицах целевого прямоугольника и исходного растрового изображения.
pSrcDC
Определяет контекст устройства, из которого копируется растровое изображение. Оно должно быть равно нулю, если dwRop параметр указывает операцию растра, которая не включает источник.
xSrc
Задает логическую координату x левого верхнего угла исходного растрового изображения.
ySrc
Указывает логическую координату Y верхнего левого угла исходного растрового изображения.
maskBitmap
Определяет растровое изображение монохромной маски в сочетании с цветным растровым изображением в контексте исходного устройства.
xMask
Задает горизонтальное смещение пикселя для растрового изображения маски, указанного параметром maskBitmap .
yMask
Указывает вертикальное смещение пикселя для растрового изображения маски, указанного параметром maskBitmap .
dwRop
Задает коды операций переднего плана и фонового растра, которые функция использует для управления сочетанием исходных и целевых данных. Код операции фонового растра хранится в высоком байте большого слова этого значения; Код операции растра переднего плана хранится в низком байте высокого слова этого значения; Низкое слово этого значения игнорируется и должно быть равно нулю. Макрос MAKEROP4 создает такие сочетания кодов операций переднего плана и фонового растра. См. раздел "Примечания" для обсуждения переднего плана и фона в контексте этой функции. См. функцию-член BitBlt для списка распространенных кодов операций растра.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Значение 1 в маске, указанное в maskBitmap маске, указывает, что код операции растрового растра переднего плана, указанный в dwRop этом расположении. Значение 0 в маске указывает, что код операции фонового растра, указанный dwRop в этом расположении. Если для операций растра требуется источник, прямоугольник маски должен охватывать исходный прямоугольник. Если это не так, функция завершается ошибкой. Если для операций растра не требуется источник, прямоугольник маски должен охватывать прямоугольник назначения. Если это не так, функция завершается ошибкой.
Если преобразование поворота или переключения действует для контекста исходного устройства при вызове этой функции, возникает ошибка. Однако разрешены другие типы преобразований.
Если цветовые форматы исходного, шаблона и целевого растровых изображений отличаются, эта функция преобразует шаблон или исходный формат, или оба, чтобы соответствовать целевому формату. Если растровое изображение маски не является однохромным, возникает ошибка. При записи расширенного метафайла возникает ошибка (и функция возвращает 0), если контекст исходного устройства определяет расширенный контекст метафайла устройства. Не все устройства поддерживаются MaskBlt. Приложение должно вызываться GetDeviceCaps , чтобы определить, поддерживает ли устройство эту функцию. Если растровое изображение маски не предоставлено, эта функция ведет себя точно так BitBltже, используя код операции растра переднего плана. Смещение пикселей в схеме растровой карты маски с точкой (0,0) в растровом рисунке исходного устройства. Это полезно для случаев, когда растровое изображение маски содержит набор маски; Приложение может легко применить любой из них к задаче маскирования, изменив смещения пикселей и размеры прямоугольника, отправленные MaskBltв .
CDC::ModifyWorldTransform
Изменяет преобразование мира для контекста устройства с помощью указанного режима.
BOOL ModifyWorldTransform(
const XFORM& rXform,
DWORD iMode);
Parameters
rXform
Ссылка на структуру, XFORM используемую для изменения преобразования мира для данного контекста устройства.
iMode
Указывает, как данные преобразования изменяют текущее преобразование мира. Список значений, которые может принимать этот параметр, см. в разделе ModifyWorldTransform.
Return Value
Возвращает ненулевое значение при успешном выполнении.
Возвращает значение 0 при сбое.
Чтобы получить расширенные сведения об ошибке, вызовите функцию GetLastError.
Remarks
Этот метод упаковывает функцию ModifyWorldTransformGDI Windows.
CDC::MoveTo
Перемещает текущую позицию в точку, указанную x и y (или по point).
CPoint MoveTo(
int x,
int y);
CPoint MoveTo(POINT point);
Parameters
x
Задает логическую координату x новой позиции.
y
Задает логическую координату y новой позиции.
point
Задает новую позицию. Для этого параметра можно передать структуру POINTCPoint или объект.
Return Value
Координаты x-и y предыдущей позиции в качестве CPoint объекта.
Example
Пример см. в примере CRect::CenterPoint.
CDC::OffsetClipRgn
Перемещает область вырезки контекста устройства по указанным смещениям.
int OffsetClipRgn(
int x,
int y);
int OffsetClipRgn(SIZE size);
Parameters
x
Указывает количество логических единиц для перемещения влево или вправо.
y
Указывает количество логических единиц для перемещения вверх или вниз.
size
Указывает сумму смещения.
Return Value
Тип нового региона. Это может быть любое из следующих значений:
COMPLEXREGIONОбласть вырезки имеет перекрывающиеся границы.ERRORНедопустимый контекст устройства.NULLREGIONОбласть вырезки пуста.SIMPLEREGIONОбласть вырезки не имеет перекрывающихся границ.
Remarks
Функция перемещает единицы региона x вдоль оси x и y единиц вдоль оси y.
CDC::OffsetViewportOrg
Изменяет координаты источника представления относительно координат текущего источника представления.
virtual CPoint OffsetViewportOrg(
int nWidth,
int nHeight);
Parameters
nWidth
Указывает количество единиц устройства, добавляемых в координату x-координат текущего источника.
nHeight
Указывает количество единиц устройства, добавляемых в координату y текущего источника.
Return Value
Предыдущий источник окна просмотра (в координатах устройства) в качестве CPoint объекта.
CDC::OffsetWindowOrg
Изменяет координаты источника окна относительно координат текущего источника окна.
CPoint OffsetWindowOrg(
int nWidth,
int nHeight);
Parameters
nWidth
Указывает количество логических единиц, добавляемых в координату x-координат текущего источника.
nHeight
Указывает количество логических единиц, добавляемых в координату y текущего источника.
Return Value
Предыдущий источник окна (в логических координатах) в качестве CPoint объекта.
CDC::operator HDC
Используйте этот оператор для получения дескриптора контекста CDC устройства объекта.
operator HDC() const;
Return Value
В случае успешного выполнения дескриптор объекта контекста устройства; NULLв противном случае .
Remarks
Вы можете использовать дескриптор для вызова API Windows напрямую.
CDC::PaintRgn
Заполняет область, указанную pRgn с помощью текущей кисти.
BOOL PaintRgn(CRgn* pRgn);
Parameters
pRgn
Определяет регион, который нужно заполнить. Координаты для заданного региона указываются в логических единицах.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
CDC::PatBlt
Создает битовый шаблон на устройстве.
BOOL PatBlt(
int x,
int y,
int nWidth,
int nHeight,
DWORD dwRop);
Parameters
x
Указывает логическую координату x левого верхнего угла прямоугольника, который требуется получить шаблон.
y
Указывает логическую координату Y верхнего левого угла прямоугольника, который требуется получить шаблон.
nWidth
Задает ширину (в логических единицах) прямоугольника, который требуется получить шаблон.
nHeight
Указывает высоту (в логических единицах) прямоугольника, который требуется получить шаблон.
dwRop
Задает код операции растра. Коды операций растровых операций (ROPS) определяют, как GDI объединяет цвета в выходных операциях, включающих текущую кисть, возможное исходное растровое изображение и целевое растровое изображение. Этот параметр может принимать одно из следующих значений :
PATCOPYКопирует шаблон в точечный рисунок назначения.PATINVERTОбъединяет растровое изображение назначения с шаблоном с помощью логического оператора XOR (^).DSTINVERTИнвертирует точечный рисунок назначения.BLACKNESSПревращает все выходные данные черным.WHITENESSПреобразует весь выходной белый цвет.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Шаблон — это сочетание выбранной кисти и шаблона, уже на устройстве. Код операции растра, указанный в dwRop определении способа объединения шаблонов. Операции растра, перечисленные для этой функции, представляют собой ограниченное подмножество полных 256 тернарных кодов операций растра; В частности, код растровой операции, ссылающийся на источник, нельзя использовать.
Не все контексты устройств поддерживают функцию PatBlt . Чтобы определить, поддерживается PatBltли контекст устройства, вызовите GetDeviceCaps функцию-член с индексом RASTERCAPS и проверьте возвращаемое значение флага RC_BITBLT .
CDC::Pie
Рисует круговую клиновую фигуру путем рисования эллиптической дуги, центр которой и две конечные точки объединяются линиями.
BOOL Pie(
int x1,
int y1,
int x2,
int y2,
int x3,
int y3,
int x4,
int y4);
BOOL Pie(
LPCRECT lpRect,
POINT ptStart,
POINT ptEnd);
Parameters
x1
Задает координату x левого верхнего угла ограничивающего прямоугольника (в логических единицах).
y1
Задает координату y верхнего левого угла ограничивающего прямоугольника (в логических единицах).
x2
Задает координату x правого нижнего угла ограничивающего прямоугольника (в логических единицах).
y2
Указывает координату Y правого нижнего угла ограничивающего прямоугольника (в логических единицах).
x3
Задает координату x начальной точки дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.
y3
Задает координату y начальной точки дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.
x4
Задает координату x конечной точки arc (в логических единицах). Этой точке не нужно лежать точно на дуге.
y4
Задает координату y конечной точки дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.
lpRect
Задает ограничивающий прямоугольник. Для этого параметра можно передать CRect объект или указатель на структуру RECT .
ptStart
Указывает начальную точку дуги. Этой точке не нужно лежать точно на дуге. Для этого параметра можно передать структуру POINTCPoint или объект.
ptEnd
Указывает конечную точку дуги. Этой точке не нужно лежать точно на дуге. Для этого параметра можно передать структуру POINTCPoint или объект.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Центр дуги — это центр ограничивающего прямоугольника, указанного x1в , y1x2и y2 (или поlpRect). Начальные и конечные точки дуги задаются x3, y3x4и y4 (или по ptStart иptEnd).
Дуга рисуется с выбранным пером, перемещаясь в направлении со счетчиком. Две другие линии извлекаются из каждой конечной точки в центр дуги. Круговая область заполняется текущей кистью. Если равно и равно, результатом является многоточие с одной линией от центра эллипса до точки (x3, x4) или (y3, y4).x3y3x4y4
Рисунок, рисуемый этой функцией, расширяется до, но не включает правые и нижние координаты. Это означает, что высота фигуры и y2 - y1 ширина фигуры .x2 - x1 Ширина и высота ограничивающего прямоугольника должны быть больше 2 единиц и меньше 32 767 единиц.
Example
void CDCView::DrawPie(CDC *pDC)
{
// Fill the client area with a simple pie chart. A
// big blue slice covers 75% of the pie, from
// 6 o'clock to 3 o'clock. This portion is filled
// with blue and has a blue edge. The remaining 25%
// is filled with a red, diagonal hatch and has
// a red edge.
// Get the client area.
CRect rectClient;
GetClientRect(rectClient);
// Make a couple of pens and similar brushes.
CPen penBlue, penRed;
CBrush brushBlue, brushRed;
CBrush *pOldBrush;
CPen *pOldPen;
brushBlue.CreateSolidBrush(RGB(0, 0, 255));
brushRed.CreateHatchBrush(HS_FDIAGONAL, RGB(255, 0, 0));
penBlue.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(0, 0, 255));
penRed.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(255, 0, 0));
// Draw from 3 o'clock to 6 o'clock, counterclockwise,
// in a blue pen with a solid blue fill.
pOldPen = pDC->SelectObject(&penBlue);
pOldBrush = pDC->SelectObject(&brushBlue);
pDC->Pie(rectClient,
CPoint(rectClient.right, rectClient.CenterPoint().y),
CPoint(rectClient.CenterPoint().x, rectClient.right));
// Draw the remaining quarter slice from 6 o'clock
// to 3 o'clock, counterclockwise, in a red pen with
// the hatched brush.
pDC->SelectObject(&penRed);
pDC->SelectObject(&brushRed);
// Same parameters, but reverse start and end points.
pDC->Pie(rectClient,
CPoint(rectClient.CenterPoint().x, rectClient.right),
CPoint(rectClient.right, rectClient.CenterPoint().y));
// Restore the previous pen.
pDC->SelectObject(pOldPen);
}
CDC::PlayMetaFile
Воспроизводит содержимое указанного метафайла в контексте устройства.
BOOL PlayMetaFile(HMETAFILE hMF);
BOOL PlayMetaFile(
HENHMETAFILE hEnhMetaFile,
LPCRECT lpBounds);
Parameters
hMF
Определяет метафайл, который необходимо воспроизвести.
hEnhMetaFile
Определяет расширенный метафайл.
lpBounds
Указывает на RECT структуру или CRect объект, содержащий координаты ограничивающего прямоугольника, используемого для отображения рисунка. Координаты указываются в логических единицах.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Метафайл можно воспроизводить любое количество раз.
Вторая версия PlayMetaFile отображает рисунок, хранящийся в заданном метафайле расширенного формата. Когда приложение вызывает вторую версию, Windows использует кадр рисунка в заголовке расширенного PlayMetaFileметафайла для сопоставления рисунка с прямоугольником, на который указывает параметр lpBounds . (Это изображение может быть перекручено или повернуто путем задания преобразования мира на выходном устройстве перед вызовом PlayMetaFile.) Точки вдоль краев прямоугольника включаются в рисунок. Изображение расширенного метафайла можно обрезать, определив область вырезки на выходном устройстве перед воспроизведением расширенного метафайла.
Если расширенный метафайл содержит необязательную палитру, приложение может достичь согласованных цветов, настроив цветовую палитру на выходном устройстве перед вызовом второй версии PlayMetaFile. Чтобы получить необязательную палитру, используйте GetEnhMetaFilePaletteEntries функцию Windows. Расширенный метафайл можно внедрить в созданный расширенный метафайл, вызвав вторую версию PlayMetaFile и воспроизвести исходный расширенный метафайл в контекст устройства для нового расширенного метафайла.
Состояния контекста выходного устройства сохраняются этой функцией. Любой объект, созданный, но не удаленный в расширенном метафайле, удаляется этой функцией. Чтобы остановить эту функцию, приложение может вызвать CancelDC функцию Windows из другого потока, чтобы завершить операцию. В этом случае функция возвращает ноль.
CDC::PlgBlt
Выполняет передачу битов цветовых данных из указанного прямоугольника в контексте исходного устройства на указанную параллелограмму в заданном контексте устройства.
BOOL PlgBlt(
LPPOINT lpPoint,
CDC* pSrcDC,
int xSrc,
int ySrc,
int nWidth,
int nHeight,
CBitmap& maskBitmap,
int xMask,
int yMask);
Parameters
lpPoint
Указывает на массив из трех точек в логическом пространстве, который определяет три угла целевой параллелограммы. Верхний левый угол исходного прямоугольника сопоставляется с первой точкой в этом массиве, правым верхним углом второй точки в этом массиве и левым нижним углом к третьей точке. Правый нижний угол исходного прямоугольника сопоставляется с неявной четвертой точкой параллелограммы.
pSrcDC
Определяет контекст исходного устройства.
xSrc
Задает координату x в логических единицах левого верхнего угла исходного прямоугольника.
ySrc
Задает координату y в логических единицах верхнего левого угла исходного прямоугольника.
nWidth
Задает ширину в логических единицах исходного прямоугольника.
nHeight
Задает высоту в логических единицах исходного прямоугольника.
maskBitmap
Определяет необязательное однохромное растровое изображение, которое используется для маскирования цветов исходного прямоугольника.
xMask
Указывает координату x левого верхнего угла однохромного растрового изображения.
yMask
Указывает координату y левого верхнего угла растрового изображения монохромного.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Если заданный дескриптор битовой маски идентифицирует допустимое монохромное растровое изображение, функция использует эту растровую карту для маскирования битов цветных данных из исходного прямоугольника.
Четвертая вершина параллелограммы (D) определяется путем обработки первых трех точек (A, B и C) как векторов и вычислений D = B + C - A.
Если битовая маска существует, значение 1 в маске указывает, что исходный цвет пикселя должен быть скопирован в место назначения. Значение 0 в маске указывает, что цвет целевого пикселя не изменяется.
Если прямоугольник маски меньше исходного и целевого прямоугольников, функция реплицирует шаблон маски.
Преобразования масштабирования, перевода и отражения разрешены в контексте исходного устройства; однако преобразования поворота и ревного перебора не являются. Если растровое изображение маски не является однохромным, возникает ошибка. Режим растяжения для контекста конечного устройства используется для определения способа растяжения или сжатия пикселей, если это необходимо. При записи расширенного метафайла возникает ошибка, если контекст исходного устройства идентифицирует контекст устройства расширенного метафайла.
Координаты назначения преобразуются в зависимости от контекста устройства назначения; исходные координаты преобразуются в зависимости от контекста исходного устройства. Если преобразование источника имеет поворот или сбой, возвращается ошибка. Если прямоугольники назначения и источника не имеют одного и того же формата цвета, PlgBlt преобразует исходный прямоугольник в соответствие с целевым прямоугольником. Не все устройства поддерживаются PlgBlt. Дополнительные сведения см. в описании RC_BITBLT возможности растра в функции-члене CDC::GetDeviceCaps .
Если контексты исходного и целевого устройств представляют несовместимые устройства, PlgBlt возвращает ошибку.
CDC::PolyBezier
Рисует одну или несколько сплайнов Bzier.
BOOL PolyBezier(
const POINT* lpPoints,
int nCount);
Parameters
lpPoints
Указывает на массив POINT структур данных, содержащих конечные точки и контрольные точки сплайнов.
nCount
Указывает количество точек в массиве lpPoints . Это значение должно быть более трех раз, чем количество линий сплайнов, так как каждая строка Bzier требует двух контрольных точек и конечной точки, а начальная строка сплайна требует другой начальной точки.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Эта функция рисует кубическую линию Bzier с помощью конечных точек и точек управления, указанных параметром lpPoints . Первая сплайн рисуется с первой точки на четвертую точку с помощью второй и третьей точек в качестве контрольных точек. Каждая следующая строка сплайна в последовательности требует ровно трех дополнительных точек: конечная точка предыдущей сплайна используется в качестве отправной точки, следующие две точки последовательности являются контрольными точками, а третья — конечной точкой.
Текущая позиция не используется или обновляется функцией PolyBezier . Рисунок не заполнен. Эта функция рисует линии с помощью текущего пера.
CDC::PolyBezierTo
Рисует одну или несколько сплайнов Bzier.
BOOL PolyBezierTo(
const POINT* lpPoints,
int nCount);
Parameters
lpPoints
Указывает на массив POINT структур данных, содержащих конечные точки и контрольные точки.
nCount
Указывает количество точек в массиве lpPoints . Это значение должно быть в три раза больше, чем количество линий сплайнов, так как каждая строка Bzier требует двух контрольных точек и конечной точки.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Эта функция рисует кубическую линию Bzier с помощью точек управления, указанных параметром lpPoints . Первая строка сплайна извлекается из текущей позиции в третью точку с помощью первых двух точек в качестве контрольных точек. Для каждой последующей сплайн функции требуется ровно три пункта и использует конечную точку предыдущего сплайна в качестве отправной точки для следующей.
PolyBezierTo перемещает текущую позицию в конечную точку последнего сплайна Bzier. Рисунок не заполнен. Эта функция рисует линии с помощью текущего пера.
Example
Пример см. в примере CDC::BeginPath.
CDC::PolyDraw
Рисует набор сегментов линий и сплайнов Bzier.
BOOL PolyDraw(
const POINT* lpPoints,
const BYTE* lpTypes,
int nCount);
Parameters
lpPoints
Указывает на массив POINT структур данных, содержащих конечные точки для каждого сегмента строки, конечных точек и точек управления для каждой сплайна Bzier.
lpTypes
Указывает на массив, указывающий, как используется каждая точка в массиве lpPoints . Значением может быть одно из следующих.
PT_MOVETOУказывает, что эта точка запускает разрознающую фигуру. Эта точка становится новой текущей позицией.PT_LINETOУказывает, что линия должна быть получена из текущей позиции до этой точки, которая затем становится новой текущей позицией.PT_BEZIERTOУказывает, что эта точка является контрольной точкой или конечной точкой для сплайна Bzier.
PT_BEZIERTO типы всегда происходят в наборах из трех. Текущая позиция определяет начальную точку для сплайна Bzier. Первые две PT_BEZIERTO точки — это контрольные точки, а третья PT_BEZIERTO — конечная точка. Конечная точка становится новой текущей позицией. Если нет трех последовательных PT_BEZIERTO точек, результаты ошибки.
PT_LINETO Тип PT_BEZIERTO или тип можно объединить со следующей константой с помощью побитового оператора OR, чтобы указать, что соответствующая точка является последней точкой на рисунке, и рисунок закрыт:
PT_CLOSEFIGUREУказывает, что рисунок автоматически закрывается послеPT_LINETOзавершения илиPT_BEZIERTOтипа для этой точки. Линия рисуется с этой точки до последнейPT_MOVETOточки илиMoveToточки.Этот флаг сочетается с
PT_LINETOтипом строки илиPT_BEZIERTOтипом конечной точки для линии Bzier с помощью побитового оператора OR . Текущая позиция устанавливается в конечную точку закрывающей линии.
nCount
Указывает общее количество точек в lpPoints массиве, то же самое, что и количество байтов в массиве lpTypes .
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Эту функцию можно использовать для рисования несвязанных цифр вместо последовательных вызовов CDC::MoveToи CDC::LineToCDC::PolyBezierTo функций-членов. Линии и линии рисуются с помощью текущего пера, и цифры не заполняются. Если активен путь, запущенный вызовом CDC::BeginPath функции-члена, PolyDraw добавляется в путь. Точки, содержащиеся в массиве lpPoints , и указывают lpTypes , является ли каждая точка частью CDC::MoveToоперации, а CDC::LineToтакже операцией CDC::BezierTo . Кроме того, можно закрыть цифры. Эта функция обновляет текущую позицию.
Example
Пример см. в примере CDC::BeginPath.
CDC::Polygon
Рисует многоугольник, состоящий из двух или более точек (вершин), подключенных по линиям, с помощью текущего пера.
BOOL Polygon(
LPPOINT lpPoints,
int nCount);
Parameters
lpPoints
Указывает на массив точек, указывающих вершины многоугольника. Каждая точка в массиве — это POINT структура или CPoint объект.
nCount
Указывает количество вершин в массиве.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Система автоматически закрывает многоугольник, при необходимости нарисовав линию от последней вершины к первой.
Текущий режим заполнения многоугольников можно получить или задать с помощью GetPolyFillMode функций-членов.SetPolyFillMode
Example
void CDCView::DrawPolygon(CDC *pDC)
{
// find the client area
CRect rect;
GetClientRect(rect);
// draw with a thick blue pen
CPen penBlue(PS_SOLID, 5, RGB(0, 0, 255));
CPen *pOldPen = pDC->SelectObject(&penBlue);
// and a solid red brush
CBrush brushRed(RGB(255, 0, 0));
CBrush *pOldBrush = pDC->SelectObject(&brushRed);
// Find the midpoints of the top, right, left, and bottom
// of the client area. They will be the vertices of our polygon.
CPoint pts[4];
pts[0].x = rect.left + rect.Width() / 2;
pts[0].y = rect.top;
pts[1].x = rect.right;
pts[1].y = rect.top + rect.Height() / 2;
pts[2].x = pts[0].x;
pts[2].y = rect.bottom;
pts[3].x = rect.left;
pts[3].y = pts[1].y;
// Calling Polygon() on that array will draw three lines
// between the points, as well as an additional line to
// close the shape--from the last point to the first point
// we specified.
pDC->Polygon(pts, 4);
// Put back the old objects.
pDC->SelectObject(pOldPen);
pDC->SelectObject(pOldBrush);
}
CDC::Polyline
Рисует набор сегментов линий, соединяющих точки, указанные lpPointsв .
BOOL Polyline(
LPPOINT lpPoints,
int nCount);
Parameters
lpPoints
Указывает на массив POINT структур или CPoint объектов, которые должны быть подключены.
nCount
Указывает количество точек в массиве. Это значение должно быть не менее 2.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Линии рисуются из первой точки через последующие точки с помощью текущего пера.
LineTo В отличие от функции-члена, Polyline функция не использует или не обновляет текущую позицию.
Дополнительные сведения см PolyLine . в пакете SDK для Windows.
CDC::PolylineTo
Рисует одну или несколько прямых линий.
BOOL PolylineTo(
const POINT* lpPoints,
int nCount);
Parameters
lpPoints
Указывает на массив POINT структур данных, содержащих вершины линии.
nCount
Указывает количество точек в массиве.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Линия извлекается из текущей позиции до первой точки, указанной lpPoints параметром с помощью текущего пера. Для каждой дополнительной строки функция извлекает из конечной точки предыдущей строки на следующую точку, указанную lpPoints.
PolylineTo перемещает текущую позицию в конечную точку последней строки. Если сегменты линии, рисуемые этой функцией, образуют закрытую фигуру, рисунок не заполняется.
CDC::PolyPolygon
Создает два или более многоугольников, заполненных с помощью текущего режима заполнения многоугольников.
BOOL PolyPolygon(
LPPOINT lpPoints,
LPINT lpPolyCounts,
int nCount);
Parameters
lpPoints
Указывает на массив структур или POINT объектов, определяющих CPoint вершины многоугольников.
lpPolyCounts
Указывает на массив целых чисел, каждый из которых указывает количество точек в одном из многоугольников в массиве lpPoints .
nCount
Количество записей в массиве lpPolyCounts . Это число указывает количество многоугольников, которые необходимо нарисовать. Это значение должно быть не менее 2.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Многоугольники могут быть несвязанными или перекрывающимися.
Каждый многоугольник, указанный в вызове PolyPolygon функции, должен быть закрыт. В отличие от многоугольников, созданных Polygon функцией-членом, многоугольники, созданные PolyPolygon не закрываются автоматически.
Функция создает два или более многоугольников. Чтобы создать один многоугольник, приложение должно использовать функцию-член Polygon .
Текущий режим заполнения многоугольников можно получить или задать с помощью GetPolyFillMode функций-членов.SetPolyFillMode
CDC::PolyPolyline
Рисует несколько рядов сегментов подключенной линии.
BOOL PolyPolyline(
const POINT* lpPoints,
const DWORD* lpPolyPoints,
int nCount);
Parameters
lpPoints
Указывает на массив структур, содержащих вершины полилайнов. Полилайны задаются последовательно.
lpPolyPoints
Указывает на массив переменных, указывающий количество точек в lpPoints массиве для соответствующего многоугольника. Каждая запись должна быть больше или равна 2.
nCount
Указывает общее количество счетчиков в массиве lpPolyPoints .
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Сегменты линий рисуются с помощью текущего пера. Цифры, сформированные сегментами, не заполняются. Текущая позиция не используется или обновляется этой функцией.
CDC::PtVisible
Определяет, находится ли данная точка в области вырезки контекста устройства.
virtual BOOL PtVisible(
int x,
int y) const;
BOOL PtVisible(POINT point) const;
Parameters
x
Указывает логическую координату x точки.
y
Задает логическую координату точки y.
point
Указывает точку для проверки логических координат. Для этого параметра можно передать структуру POINTCPoint или объект.
Return Value
Ненулевое значение, если указанная точка находится в регионе вырезки; в противном случае — 0.
CDC::QueryAbort
Вызывает функцию прерывания, SetAbortProc установленную функцией-членом для приложения печати, и запрашивает, следует ли завершить печать.
BOOL QueryAbort() const;
Return Value
Возвращаемое значение ненулевое, если печать должна продолжаться или нет процедуры прерывания. Значение 0, если задание печати должно быть завершено. Возвращаемое значение предоставляется функцией прерывания.
CDC::RealizePalette
Сопоставляет записи из текущей логической палитры с системной палитрой.
UINT RealizePalette();
Return Value
Указывает, сколько записей в логической палитре сопоставлено с различными записями в системной палитре. Это представляет количество записей, которые эта функция переназначалась для изменения в системной палитре, так как логическая палитра была реализована в последний раз.
Remarks
Логическая цветовая палитра выступает в качестве буфера между цветоемкими приложениями и системой, что позволяет приложению использовать столько цветов, сколько необходимо, не вмешиваясь в собственные отображаемые цвета или цвета, отображаемые другими окнами.
Если окно имеет фокус ввода и вызовы RealizePalette, Windows гарантирует, что окно будет отображать все запрошенные цвета, вплоть до максимального числа одновременно доступных на экране. Windows также отображает цвета, не найденные в палитре окна, сопоставляя их с доступными цветами.
Кроме того, Windows соответствует цветам, запрошенным неактивными окнами, которые вызывают функцию как можно ближе к доступным цветам. Это значительно уменьшает нежелательные изменения цветов, отображаемых в неактивных окнах.
CDC::Rectangle
Рисует прямоугольник с помощью текущего пера.
BOOL Rectangle(
int x1,
int y1,
int x2,
int y2);
BOOL Rectangle(LPCRECT lpRect);
Parameters
x1
Указывает координату x левого верхнего угла прямоугольника (в логических единицах).
y1
Задает координату y левого верхнего угла прямоугольника (в логических единицах).
x2
Задает координату x правого нижнего угла прямоугольника (в логических единицах).
y2
Указывает координату y правого нижнего угла прямоугольника (в логических единицах).
lpRect
Задает прямоугольник в логических единицах. Для этого параметра можно передать CRect объект или указатель на структуру RECT .
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Интерьер прямоугольника заполняется с помощью текущей кисти.
Прямоугольник расширяется до, но не включает, правые и нижние координаты. Это означает, что высота прямоугольника равна y2 - y1 ширине прямоугольника.x2 - x1 Ширина и высота прямоугольника должны быть больше 2 единиц и меньше 32 767 единиц.
Example
void CDCView::DrawRectangle(CDC *pDC)
{
// create and select a solid blue brush
CBrush brushBlue(RGB(0, 0, 255));
CBrush *pOldBrush = pDC->SelectObject(&brushBlue);
// create and select a thick, black pen
CPen penBlack;
penBlack.CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
CPen *pOldPen = pDC->SelectObject(&penBlack);
// get our client rectangle
CRect rect;
GetClientRect(rect);
// shrink our rect 20 pixels in each direction
rect.DeflateRect(20, 20);
// draw a thick black rectangle filled with blue
pDC->Rectangle(rect);
// put back the old objects
pDC->SelectObject(pOldBrush);
pDC->SelectObject(pOldPen);
}
CDC::RectVisible
Определяет, находится ли любая часть заданного прямоугольника в области вырезки контекста отображения.
virtual BOOL RectVisible(LPCRECT lpRect) const;
Parameters
lpRect
Указывает на RECT структуру или CRect объект, содержащий логические координаты указанного прямоугольника.
Return Value
Ненулевое значение, если какая-либо часть заданного прямоугольника находится в области вырезки; в противном случае — 0.
CDC::ReleaseAttribDC
Вызовите эту функцию-член, чтобы задать m_hAttribDC значение NULL.
virtual void ReleaseAttribDC();
Remarks
Это не приводит Detach к возникновению ошибки. К объекту подключен CDC только контекст выходного устройства, и его можно отсоединить.
CDC::ReleaseOutputDC
Вызовите эту функцию-член, чтобы задать для m_hDC элемента значение NULL.
virtual void ReleaseOutputDC();
Remarks
Эта функция-член не может вызываться при присоединении контекста выходного устройства к объекту CDC . Используйте функцию-член, Detach чтобы отключить контекст выходного устройства.
CDC::ResetDC
Вызовите эту функцию-член, чтобы обновить контекст устройства, завернутый CDC объектом.
BOOL ResetDC(const DEVMODE* lpDevMode);
Parameters
lpDevMode
Указатель на структуру Windows DEVMODE .
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Контекст устройства обновляется из сведений, указанных в структуре Windows DEVMODE . Эта функция-член сбрасывает только контекст устройства атрибута.
Приложение обычно использует ResetDC функцию-член, когда окно обрабатывает WM_DEVMODECHANGE сообщение. Эту функцию-член можно также использовать для изменения ориентации бумаги или бумажных корзин при печати документа.
Эту функцию-член нельзя использовать для изменения имени драйвера, имени устройства или выходного порта. Когда пользователь изменяет имя подключения к порту или устройств, необходимо удалить исходный контекст устройства и создать новый контекст устройства с новыми сведениями.
Прежде чем вызывать эту функцию-член, необходимо убедиться, что все объекты (кроме объектов акций), выбранные в контексте устройства, были выбраны.
CDC::RestoreDC
Восстанавливает контекст устройства до предыдущего состояния, определяемого nSavedDC.
virtual BOOL RestoreDC(int nSavedDC);
Parameters
nSavedDC
Указывает контекст устройства, который требуется восстановить. Это может быть значение, возвращаемое предыдущим SaveDC вызовом функции. Если nSavedDC значение равно -1, то восстанавливается последний сохраненный контекст устройства.
Return Value
Ненулевое значение, если указанный контекст был восстановлен; в противном случае — 0.
Remarks
RestoreDC восстанавливает контекст устройства путем всплывающих сведений о состоянии из стека, созданного предыдущими вызовами SaveDC функции-члена.
Стек может содержать сведения о состоянии для нескольких контекстов устройства. Если контекст, указанный nSavedDC не в верхней части стека, удаляет все сведения о состоянии между контекстом устройства, RestoreDC указанным nSavedDC в верхней части стека. Удаленная информация потеряна.
CDC::RoundRect
Рисует прямоугольник с закругленными углами с помощью текущего пера.
BOOL RoundRect(
int x1,
int y1,
int x2,
int y2,
int x3,
int y3);
BOOL RoundRect(
LPCRECT lpRect,
POINT point);
Parameters
x1
Указывает координату x левого верхнего угла прямоугольника (в логических единицах).
y1
Задает координату y левого верхнего угла прямоугольника (в логических единицах).
x2
Задает координату x правого нижнего угла прямоугольника (в логических единицах).
y2
Указывает координату y правого нижнего угла прямоугольника (в логических единицах).
x3
Задает ширину многоточия, используемой для рисования округлых углов (в логических единицах).
y3
Задает высоту многоточия, используемого для рисования округлых углов (в логических единицах).
lpRect
Указывает ограничивающий прямоугольник в логических единицах. Для этого параметра можно передать CRect объект или указатель на структуру RECT .
point
Координата x point указывает ширину многоточия для рисования округлых углов (в логических единицах). Координата y point указывает высоту многоточия для рисования округлых углов (в логических единицах). Для этого параметра можно передать структуру POINTCPoint или объект.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Интерьер прямоугольника заполняется с помощью текущей кисти.
Рисунок, который рисует эта функция, расширяется до, но не включает правые и нижние координаты. Это означает, что высота фигуры и y2 - y1 ширина фигуры .x2 - x1 Высота и ширина ограничивающего прямоугольника должны быть больше 2 единиц и меньше 32 767 единиц.
Example
void CDCView::DrawRoundRect(CDC *pDC)
{
// create and select a solid blue brush
CBrush brushBlue(RGB(0, 0, 255));
CBrush *pOldBrush = pDC->SelectObject(&brushBlue);
// create and select a thick, black pen
CPen penBlack;
penBlack.CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
CPen *pOldPen = pDC->SelectObject(&penBlack);
// get our client rectangle
CRect rect;
GetClientRect(rect);
// shrink our rect 20 pixels in each direction
rect.DeflateRect(20, 20);
// Draw a thick black rectangle filled with blue
// corners rounded at a 17-unit radius. Note that
// a radius of three or less is not noticeable because
// the pen is three units wide.
pDC->RoundRect(rect, CPoint(17, 17));
// put back the old objects
pDC->SelectObject(pOldBrush);
pDC->SelectObject(pOldPen);
}
CDC::SaveDC
Сохраняет текущее состояние контекста устройства путем копирования сведений о состоянии (например, вырезки области, выбранных объектов и режима сопоставления) в стек контекста, поддерживаемый Windows.
virtual int SaveDC();
Return Value
Целое число, определяющее сохраненный контекст устройства. Если возникает ошибка, это значение 0. Это возвращаемое значение можно использовать для восстановления контекста устройства путем вызова RestoreDC.
Remarks
С помощью сохраненного контекста устройства можно восстановить.RestoreDC
SaveDC можно использовать любое количество раз, чтобы сохранить любое количество состояний контекста устройства.
CDC::ScaleViewportExt
Изменяет экстенты окна просмотра относительно текущих значений.
virtual CSize ScaleViewportExt(
int xNum,
int xDenom,
int yNum,
int yDenom);
Parameters
xNum
Указывает объем, на который умножается текущий x-экстент.
xDenom
Указывает объем, по которому можно разделить результат умножения текущего xNum x-экстента на значение параметра.
yNum
Указывает объем, на который умножается текущая степень y.
yDenom
Указывает объем, по которому следует разделить результат умножения текущего yNum y-экстента на значение параметра.
Return Value
Предыдущие экстенты представления (в единицах устройства) в качестве CSize объекта.
Remarks
Формулы записываются следующим образом:
xNewVE = ( xOldVE * xNum ) / xDenom
yNewVE = ( yOldVE * yNum ) / yDenom
Новые экстенты представления вычисляются путем умножения текущих экстентов на заданный числитель, а затем деления по заданному знаменателю.
CDC::ScaleWindowExt
Изменяет экстенты окна относительно текущих значений.
virtual CSize ScaleWindowExt(
int xNum,
int xDenom,
int yNum,
int yDenom);
Parameters
xNum
Указывает объем, на который умножается текущий x-экстент.
xDenom
Указывает объем, по которому можно разделить результат умножения текущего xNum x-экстента на значение параметра.
yNum
Указывает объем, на который умножается текущая степень y.
yDenom
Указывает объем, по которому следует разделить результат умножения текущего yNum y-экстента на значение параметра.
Return Value
Предыдущие экстенты окна (в логических единицах) в качестве CSize объекта.
Remarks
Формулы записываются следующим образом:
xNewWE = ( xOldWE * xNum ) / xDenom
yNewWE = ( yOldWE * yNum ) / yDenom
Новые экстенты окна вычисляются путем умножения текущих экстентов на заданный числитель, а затем деления на заданный знаменатель.
CDC::ScrollDC
Прокручивает прямоугольник битов по горизонтали и по вертикали.
BOOL ScrollDC(
int dx,
int dy,
LPCRECT lpRectScroll,
LPCRECT lpRectClip,
CRgn* pRgnUpdate,
LPRECT lpRectUpdate);
Parameters
dx
Указывает количество горизонтальных единиц прокрутки.
dy
Указывает количество единиц вертикальной прокрутки.
lpRectScroll
Указывает на RECT структуру или CRect объект, содержащий координаты прямоугольника прокрутки.
lpRectClip
Указывает на RECT структуру или CRect объект, содержащий координаты прямоугольника обрезки. Если этот прямоугольник меньше исходного, на который указывает lpRectScroll, прокрутка происходит только в меньшем прямоугольнике.
pRgnUpdate
Определяет регион, обнаруженный процессом прокрутки. Функция ScrollDC определяет этот регион; это не обязательно прямоугольник.
lpRectUpdate
Указывает на RECT структуру или CRect объект, получающий координаты прямоугольника, ограничивающего область обновления прокрутки. Это самая большая прямоугольная область, требующая переопределений. Значения в структуре или объекте, когда функция возвращается в клиентских координатах, независимо от режима сопоставления для заданного контекста устройства.
Return Value
Ненулевое значение, если выполняется прокрутка; в противном случае — 0.
Remarks
Если lpRectUpdate это NULLтак, Windows не вычисляет прямоугольник обновления. Если оба pRgnUpdate и lpRectUpdate есть NULL, Windows не вычисляет регион обновления. Если pRgnUpdate это не NULLтак, Windows предполагает, что он содержит допустимый указатель на регион, обнаруженный процессом прокрутки (определяется ScrollDC функцией-членом). Регион обновления, возвращенный в lpRectUpdate , может быть передан CWnd::InvalidateRgn в случае необходимости.
Приложение должно использовать ScrollWindow функцию-член класса CWnd , если необходимо прокрутить всю клиентскую область окна. В противном случае он должен использовать ScrollDC.
CDC::SelectClipPath
Выбирает текущий путь в качестве области вырезки для контекста устройства, сочетая новый регион с любым существующим регионом вырезки с помощью указанного режима.
BOOL SelectClipPath(int nMode);
Parameters
nMode
Указывает способ использования пути. Допустимы следующие значения:
RGN_ANDНовый регион вырезки включает пересечение (перекрывающиеся области) текущей области вырезки и текущего пути.RGN_COPYНовый регион вырезки — это текущий путь.RGN_DIFFНовый регион вырезки включает в себя области текущего вырезки, а те из текущего пути исключены.RGN_ORНовый регион вырезки включает объединение (объединенные области) текущего региона вырезки и текущего пути.RGN_XORНовый регион вырезки включает объединение текущего региона вырезки и текущего пути, но без перекрывающихся областей.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Контекст устройства должен содержать закрытый путь.
CDC::SelectClipRgn
Выбирает заданный регион в качестве текущей области вырезки для контекста устройства.
int SelectClipRgn(CRgn* pRgn);
int SelectClipRgn(
CRgn* pRgn,
int nMode);
Parameters
pRgn
Определяет выбранный регион.
Для первой версии этой функции, если это значение
NULLимеет значение, выбрана вся клиентская область и выходные данные по-прежнему обрезаются в окне.Для второй версии этой функции этот дескриптор может быть
NULLтолько в том случае, еслиRGN_COPYуказан режим.
nMode
Указывает операцию, выполняемую. Это должно быть одно из следующих значений:
RGN_ANDНовый регион вырезки объединяет перекрывающиеся области текущего обрезки и регион,pRgnопределенный.RGN_COPYНовый регион вырезки — это копия региона, определяемогоpRgn. Это функция идентична первой версииSelectClipRgn. Если регион определен,pRgnNULLновый регион вырезки становится областью вырезки по умолчанию (пустой регион).RGN_DIFFНовый регион вырезки объединяет области текущего обрезки с этими областями, исключенными из региона, определяемогоpRgn.RGN_ORНовый регион вырезки объединяет текущий регион вырезки и регион, определенныйpRgn.RGN_XORНовый регион вырезки объединяет текущий регион вырезки и регион,pRgnопределенный, но исключает любые перекрывающиеся области.
Return Value
Тип региона. В качестве такой точки может выступать любой из следующих вариантов:
COMPLEXREGIONНовый регион вырезки имеет перекрывающиеся границы.ERRORКонтекст устройства или регион недопустимы.NULLREGIONНовая область вырезки пуста.SIMPLEREGIONНовый регион вырезки не имеет перекрывающихся границ.
Remarks
Используется только копия выбранного региона. Сам регион можно выбрать для любого количества других контекстов устройства или его можно удалить.
Функция предполагает, что координаты для данного региона указаны в единицах устройства. Некоторые устройства принтера поддерживают вывод текста с более высоким разрешением, чем графические выходные данные, чтобы сохранить точность, необходимую для выражения текстовых метрик. Эти устройства сообщают об единицах устройства с более высоким разрешением, то есть в текстовых единицах. Затем эти устройства масштабируют координаты для графики, чтобы несколько единиц устройств сопоставлялись только с 1 графическим блоком. Всегда следует вызывать функцию SelectClipRgn с помощью текстовых единиц.
Приложения, которые должны принимать масштабирование графических объектов в GDI, могут использовать GETSCALINGFACTOR экран принтера для определения коэффициента масштабирования. Этот коэффициент масштабирования влияет на вырезку. Если область используется для клипа графики, GDI делит координаты на коэффициент масштабирования. Если область используется для обрезки текста, GDI не корректирует масштабирование. Коэффициент масштабирования 1 приводит к деления координат на 2; коэффициент масштабирования 2 приводит к деления координатам на 4; и т. д.
CDC::SelectObject
Выбирает объект в контексте устройства.
CPen* SelectObject(CPen* pPen);
CBrush* SelectObject(CBrush* pBrush);
virtual CFont* SelectObject(CFont* pFont);
CBitmap* SelectObject(CBitmap* pBitmap);
int SelectObject(CRgn* pRgn);
CGdiObject* SelectObject(CGdiObject* pObject);
Parameters
pPen
Указатель на выбранный CPen объект.
pBrush
Указатель на выбранный CBrush объект.
pFont
Указатель на выбранный CFont объект.
pBitmap
Указатель на выбранный CBitmap объект.
pRgn
Указатель на выбранный CRgn объект.
pObject
Указатель на выбранный CGdiObject объект.
Return Value
Указатель на замещаемый объект. Это указатель на объект одного из классов, производных от CGdiObject, например CPen, в зависимости от используемой версии функции. Возвращаемое значение имеет значение NULL , если возникла ошибка. Эта функция может вернуть указатель на временный объект. Этот временный объект действителен только во время обработки одного сообщения Windows. Дополнительные сведения см. в разделе CGdiObject::FromHandle.
Версия функции-члена, которая принимает параметр региона, выполняет ту же задачу, что SelectClipRgn и функция-член. Возвращаемое значение может быть любым из следующих значений:
COMPLEXREGIONНовый регион вырезки имеет перекрывающиеся границы.ERRORКонтекст устройства или регион недопустимы.NULLREGIONНовая область вырезки пуста.SIMPLEREGIONНовый регион вырезки не имеет перекрывающихся границ.
Remarks
Класс CDC предоставляет пять версий, специализированных для определенных типов объектов GDI, включая ручки, кисти, шрифты, растровые изображения и регионы. Только что выбранный объект заменяет предыдущий объект того же типа. Например, если pObject общая версия SelectObject указывает на CPen объект, функция заменяет текущее перо пером, указанным.pObject
Приложение может выбрать растровое изображение только в контекстах устройства памяти и в один контекст устройства памяти одновременно. Формат растрового изображения должен быть монохромным или совместимым с контекстом устройства; Если это не так, SelectObject возвращает ошибку.
Для Windows 3.1 и более поздних версий функция возвращает то же значение, SelectObject которое используется в метафайле или нет. В предыдущих версиях Windows SelectObject возвращает ненулевое значение для успешного выполнения и 0 для сбоя при использовании в метафайле.
CDC::SelectPalette
Выбирает логическую палитру, указанную pPalette в качестве выбранного объекта палитры контекста устройства.
CPalette* SelectPalette(
CPalette* pPalette,
BOOL bForceBackground);
Parameters
pPalette
Определяет выбранную логическую палитру. Эта палитра уже должна быть создана с CPalette помощью функции-члена CreatePalette.
bForceBackground
Указывает, вынуждена ли логическая палитра быть фоновой палитрой. Если bForceBackground ненулевое значение, выбранная палитра всегда является фоновой палитрой, независимо от того, имеет ли окно фокус ввода. Если bForceBackground значение равно 0, а контекст устройства присоединен к окну, логическая палитра — это палитра переднего плана, когда окно имеет фокус ввода.
Return Value
Указатель на объект, определяющий CPalette логическую палитру, замененную палитрой, указанной .pPalette Это если NULL возникла ошибка.
Remarks
Новая палитра становится объектом палитры, используемым GDI для управления цветами, отображаемыми в контексте устройства, и заменяет предыдущую палитру.
Приложение может выбрать логическую палитру в несколько контекстов устройства. Однако изменения в логической палитре влияют на все контексты устройства, для которых он выбран. Если приложение выбирает палитру в нескольких контекстах устройства, контексты устройств должны принадлежать одному физическому устройству.
CDC::SelectStockObject
Выбирает объект, соответствующий CGdiObject одному из предопределенных стандартных перьев, кистей или шрифтов.
virtual CGdiObject* SelectStockObject(int nIndex);
Parameters
nIndex
Указывает тип требуемого объекта акций. Может иметь одно из следующих значений.
BLACK_BRUSHЧерная кисть.DKGRAY_BRUSHТемно-серая кисть.GRAY_BRUSHСерая кисть.HOLLOW_BRUSHПолая кисть.LTGRAY_BRUSHСветло-серая кисть.NULL_BRUSHКисть NULL.WHITE_BRUSHБелая кисть.BLACK_PENЧерное перо.NULL_PENПустое перо.WHITE_PENБелое перо.ANSI_FIXED_FONTФиксированный шрифт системы ANSI.ANSI_VAR_FONTШрифт системы переменных ANSI.DEVICE_DEFAULT_FONTШрифт, зависящий от устройства.OEM_FIXED_FONTФиксированный шрифт, зависящий от OEM.SYSTEM_FONTСистемный шрифт. По умолчанию Windows использует системный шрифт для рисования меню, элементов управления диалоговым окном и другого текста. Однако лучше не полагатьсяSYSTEM_FONTна получение шрифта, используемого диалогами и окнами. Вместо этого используйтеSystemParametersInfoфункцию с параметромSPI_GETNONCLIENTMETRICSдля получения текущего шрифта.SystemParametersInfoучитывает текущую тему и предоставляет сведения о шрифте для подписей, меню и диалоговых окон сообщений.SYSTEM_FIXED_FONTШрифт системы фиксированной ширины, используемый в Windows до версии 3.0. Этот объект доступен для совместимости с более ранними версиями Windows.DEFAULT_PALETTEЦветовая палитра по умолчанию. Эта палитра состоит из 20 статических цветов в системной палитре.
Return Value
Указатель на CGdiObject объект, который был заменен, если функция выполнена успешно. Фактический объект, на который указывает, является объектом CPen, CBrushили CFont объектом. Если вызов не выполнен, возвращаемое значение равно NULL.
CDC::SetAbortProc
Устанавливает процедуру прерывания задания печати.
int SetAbortProc(BOOL (CALLBACK* lpfn)(HDC, int));
Parameters
lpfn
Указатель на функцию прерывания для установки в качестве процедуры прерывания. Дополнительные сведения о функции обратного вызова см. в разделе "Функция обратного вызова".CDC::SetAbortProc
Return Value
Указывает результат SetAbortProc функции. Некоторые из следующих значений являются более вероятными, чем другие, но все это возможно.
SP_ERRORОбщая ошибка.SP_OUTOFDISKНедостаточно места на диске в настоящее время доступно для spooling, и больше места не станет доступным.SP_OUTOFMEMORYНедостаточно памяти доступно для spooling.SP_USERABORTПользователь завершил задание с помощью диспетчера печати.
Remarks
Если приложение должно разрешить отмену задания печати во время spooling, оно должно задать функцию прерывания перед запуском задания печати с StartDoc функцией-членом. Диспетчер печати вызывает функцию прерывания во время spooling, чтобы разрешить приложению отменить задание печати или обработать условия вне дискового пространства. Если функция прерывания не задана, задание печати завершится ошибкой, если недостаточно места на диске для spooling.
Функции Microsoft Visual C++ упрощают создание функции обратного вызова, переданной SetAbortProcв . Адрес, переданный EnumObjects функции-члену, — это указатель на функцию, экспортированную с __declspec(dllexport) помощью соглашения о вызовах __stdcall .
Кроме того, вам не нужно экспортировать имя функции в инструкции EXPORTS в файле определения модуля приложения. Вместо этого можно использовать EXPORT модификатор функции, как и в
BOOL CALLBACK EXPORT AFunction( HDC, int );
Чтобы компилятор выдает правильную запись экспорта для экспорта по имени без псевдонима. Это работает для большинства потребностей. Для некоторых особых случаев, таких как экспорт функции путем порядкового или псевдонима экспорта, вам по-прежнему необходимо использовать EXPORTS инструкцию в файле определения модуля.
Интерфейсы регистрации обратного вызова теперь являются типобезопасны (необходимо передать указатель функции, указывающий на правильную функцию для конкретного обратного вызова).
Все функции обратного вызова должны перехватывать исключения Microsoft Foundation перед возвращением в Windows, так как исключения нельзя создавать через границы обратного вызова. Дополнительные сведения об исключениях см. в статье "Исключения".
CDC::SetArcDirection
Задает направление рисования, которое будет использоваться для функций дуги и прямоугольника.
int SetArcDirection(int nArcDirection);
Parameters
nArcDirection
Задает новое направление дуги. Этот параметр может иметь одно из следующих значений:
AD_COUNTERCLOCKWISEЦифры, нарисованные против часовой стрелки.AD_CLOCKWISEРисуется по часовой стрелке.
Return Value
Указывает старое направление дуги, если это успешно; в противном случае — 0.
Remarks
Направление по умолчанию — по счетчику. Функция SetArcDirection указывает направление, в котором выполняются следующие функции:
| Arc | Pie |
|---|---|
ArcTo |
Rectangle |
Chord |
RoundRect |
Ellipse |
CDC::SetAttribDC
Вызовите эту функцию, чтобы задать контекст устройства атрибута. m_hAttribDC
virtual void SetAttribDC(HDC hDC);
Parameters
hDC
Контекст устройства Windows.
Remarks
Эта функция-член не присоединяет контекст устройства к объекту CDC . К объекту подключен CDC только контекст выходного устройства.
CDC::SetBkColor
Задает текущий цвет фона указанным цветом.
virtual COLORREF SetBkColor(COLORREF crColor);
Parameters
crColor
Задает новый цвет фона.
Return Value
Предыдущий цвет фона в качестве значения цвета RGB. Если возникает ошибка, возвращаемое значение 0x80000000.
Remarks
Если фоновый режим имеет значение OPAQUE, система использует цвет фона для заполнения пробелов в стилях, пробелов между штриховками в кисти и фоном в ячейках символов. Система также использует цвет фона при преобразовании растровых изображений между контекстами цветов и монохромных устройств.
Если устройство не может отобразить указанный цвет, система задает цвет фона ближайшим физическим цветом.
CDC::SetBkMode
Задает фоновый режим.
int SetBkMode(int nBkMode);
Parameters
nBkMode
Указывает режим, который нужно задать. Этот параметр может иметь одно из следующих значений:
OPAQUEФон заполняется текущим цветом фона перед текстом, штриховкой кистью или пером. Это фоновый режим по умолчанию.TRANSPARENTФон не изменяется до рисования.
Return Value
Предыдущий фоновый режим.
Remarks
В фоновом режиме определяется, удаляет ли система существующие цвета фона на поверхности рисования перед рисованием текста, штриховками или любым стилем пера, который не является сплошной линией.
Example
Пример см. в примере CWnd::OnCtlColor.
CDC::SetBoundsRect
Управляет накоплением ограничивающих прямоугольников для указанного контекста устройства.
UINT SetBoundsRect(
LPCRECT lpRectBounds,
UINT flags);
Parameters
lpRectBounds
Указывает на структуру RECT или CRect объект, который используется для задания ограничивающего прямоугольника. Измерения прямоугольника задаются в логических координатах. Этот параметр может иметь значение NULL.
flags
Указывает, как будет сочетаться новый прямоугольник с накопленным прямоугольником. Этот параметр может быть сочетанием следующих значений:
DCB_ACCUMULATEДобавьте прямоугольник, заданный ограничивающимlpRectBoundsпрямоугольником (с помощью операции прямоугольника-объединения).DCB_DISABLEОтключите накопление границ.DCB_ENABLEВключите накопление границ. (Параметр по умолчанию для накопления границ отключен.)
Return Value
Текущее состояние ограничивающего прямоугольника, если функция выполнена успешно. Например flags, возвращаемое значение может быть сочетанием значений DCB_ :
DCB_ACCUMULATEОграничивающий прямоугольник не пуст. Это значение всегда будет задано.DCB_DISABLEОтключается накопление границ.DCB_ENABLEНакопление границ включено.
Remarks
Windows может поддерживать ограничивающий прямоугольник для всех операций рисования. Этот прямоугольник можно запрашивать и сбрасывать приложением. Границы рисования полезны для недопустимых кэшей растровых изображений.
CDC::SetBrushOrg
Указывает источник, который GDI назначит следующей кисти, которую приложение выбирает в контексте устройства.
CPoint SetBrushOrg(
int x,
int y);
CPoint SetBrushOrg(POINT point);
Parameters
x
Задает координату x (в единицах устройства) нового источника. Это значение должно находиться в диапазоне 0–7.
y
Задает координату y (в единицах устройства) нового источника. Это значение должно находиться в диапазоне 0–7.
point
Задает координаты x-и y нового источника. Каждое значение должно находиться в диапазоне от 0 до 7. Для этого параметра можно передать структуру POINTCPoint или объект.
Return Value
Предыдущий источник кисти в единицах устройства.
Remarks
Координаты по умолчанию для источника кисти :0, 0). Чтобы изменить источник кисти, вызовите UnrealizeObject функцию для CBrush объекта, вызовите SetBrushOrgи вызовите SelectObject функцию-член, чтобы выбрать кисть в контексте устройства.
Не используйте SetBrushOrg с объектами акций CBrush .
CDC::SetColorAdjustment
Задает значения корректировки цвета для контекста устройства с помощью указанных значений.
BOOL SetColorAdjustment(const COLORADJUSTMENT* lpColorAdjust);
Parameters
lpColorAdjust
Указывает на структуру COLORADJUSTMENT данных, содержащую значения корректировки цвета.
Return Value
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Remarks
Значения корректировки цвета используются для настройки входного цвета исходного растрового изображения для вызовов CDC::StretchBlt функции-члена при HALFTONE установке режима.
CDC::SetDCBrushColor
Задает текущий цвет кисти контекста устройства (DC) указанным значением цвета.
COLORREF SetDCBrushColor(COLORREF crColor);
Parameters
crColor
Задает новый цвет кисти.
Return Value
Если функция выполнена успешно, возвращаемое значение указывает предыдущий цвет кисти контроллера домена в качестве COLORREF значения.
Если функция завершается ошибкой, возвращается CLR_INVALIDзначение.
Remarks
Этот метод эмулирует функциональные возможности функции функции SetDCBrushColor, как описано в пакете SDK для Windows.
CDC::SetDCPenColor
Задает текущий цвет пера (DC) для заданного значения цвета.
COLORREF SetDCPenColor(COLORREF crColor);
Parameters
crColor
Задает новый цвет пера.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Эта функция-член использует функцию SetDCPenColorWin32, как описано в пакете SDK для Windows.
CDC::SetGraphicsMode
Задает графический режим для указанного контекста устройства.
int SetGraphicsMode(int iMode);
Parameters
iMode
Задает графический режим. Список значений, которые может принимать этот параметр, см. в разделе SetGraphicsMode.
Return Value
Возвращает старый графический режим при успешном выполнении.
Возвращает значение 0 при сбое. Чтобы получить расширенные сведения об ошибке, вызовите функцию GetLastError.
Remarks
Этот метод упаковывает функцию SetGraphicsModeGDI Windows.
CDC::SetLayout
Вызовите эту функцию-член, чтобы изменить макет текста и графики для контекста устройства справа налево, стандартный макет для таких культур, как арабский и иврит.
DWORD SetLayout(DWORD dwLayout);
Parameters
dwLayout
Макет контекста устройства и флаги элемента управления растровым изображением. Это может быть сочетание следующих значений.
| Value | Meaning |
|---|---|
LAYOUT_BITMAPORIENTATIONPRESERVED |
Отключает любое отражение для вызовов CDC::BitBlt и CDC::StretchBlt. |
LAYOUT_RTL |
Задает горизонтальный макет по умолчанию справа налево. |
LAYOUT_LTR |
Задает макет по умолчанию слева направо. |
Return Value
При успешном выполнении предыдущего макета контекста устройства.
В случае неудачи GDI_ERROR. Чтобы получить расширенные сведения об ошибке, вызовите функцию GetLastError.
Remarks
Как правило, вы не вызовете SetLayout окно. Вместо этого вы управляете макетом справа налево в окне, задав расширенные стили окон, WS_EX_RTLREADINGнапример. Контекст устройства, например принтер или метафайл, не наследует этот макет. Единственным способом задать контекст устройства для макета справа налево является вызов SetLayout.
При вызове SetLayout(LAYOUT_RTL)SetLayout автоматически измените режим MM_ISOTROPICсопоставления на . В результате последующий вызов GetMapMode возвращается MM_ISOTROPIC вместо MM_TEXT.
В некоторых случаях, например с большим количеством растровых изображений, может потребоваться сохранить макет слева направо. В таких случаях отрисовка изображения путем вызова BitBlt или StretchBltзадания флага элемента управления растровым изображениемdwLayout.LAYOUT_BITMAPORIENTATIONPRESERVED
После изменения макета с флагом LAYOUT_RTL флаги флаги обычно указываются вправо или влево. Чтобы избежать путаницы, может потребоваться определить альтернативные имена стандартных флагов. Список предлагаемых альтернативных имен флагов см SetLayout . в пакете SDK для Windows.
CDC::SetMapMode
Задает режим сопоставления.
virtual int SetMapMode(int nMapMode);
Parameters
nMapMode
Задает новый режим сопоставления. Это может быть любое из следующих значений:
MM_ANISOTROPICЛогические единицы преобразуются в произвольные единицы с произвольным масштабированием осей. Настройка режимаMM_ANISOTROPICсопоставления не изменяет текущие параметры окна или окна просмотра. Чтобы изменить единицы, ориентацию и масштабирование, вызовитеSetWindowExtфункции иSetViewportExtфункции-члены.MM_HIENGLISHКаждая логическая единица преобразуется в 0,001 дюйма. Положительный x — справа; положительный y вверх.MM_HIMETRICКаждая логическая единица преобразуется в 0,01 миллиметра. Положительный x — справа; положительный y вверх.MM_ISOTROPICЛогические единицы преобразуются в произвольные единицы с равномасштабными осями; То есть 1 единица вдоль оси x равна 1 единице вдоль оси y.SetWindowExtSetViewportExtИспользуйте функции-члены, чтобы указать нужные единицы и ориентацию осей. GDI вносит корректировки по мере необходимости, чтобы гарантировать, что единицы x и y остаются одинаковыми.MM_LOENGLISHКаждая логическая единица преобразуется в 0,01 дюйма. Положительный x — справа; положительный y вверх.MM_LOMETRICКаждая логическая единица преобразуется в 0,1 миллиметра. Положительный x — справа; положительный y вверх.MM_TEXTКаждая логическая единица преобразуется в 1 пиксель устройства. Положительный x — справа; положительный y вниз.MM_TWIPSКаждая логическая единица преобразуется в 1/20 точки. (Так как точка составляет 1/72 дюйма, twip составляет 1/1440 дюйма.) Положительный x — справа; положительный y вверх.
Return Value
Предыдущий режим сопоставления.
Remarks
В режиме сопоставления определяется единица измерения, используемая для преобразования логических единиц в единицы устройства; Он также определяет ориентацию x-и y-осей устройства. GDI использует режим сопоставления для преобразования логических координат в соответствующие координаты устройства. Режим MM_TEXT позволяет приложениям работать в пикселях устройства, где 1 единица равна 1 пикселям. Физический размер пикселя зависит от устройства к устройству.
Режимы MM_HIENGLISH, MM_HIMETRIC, и MM_LOENGLISHMM_LOMETRICMM_TWIPS режимы полезны для приложений, которые должны рисовать в физически значимых единицах (например, дюймах или миллиметрах). Режим MM_ISOTROPIC обеспечивает соотношение пропорций 1:1, которое полезно, если важно сохранить точную форму изображения. Режим MM_ANISOTROPIC позволяет независимо настраивать координаты x и y.
Note
При вызове SetLayout изменения контроллера домена (контекст устройства) на правый на левый макет SetLayout автоматически изменяет режим MM_ISOTROPICсопоставления.
Example
Пример см. в примере CView::OnPrepareDC.
CDC::SetMapperFlags
Изменяет метод, используемый картой шрифта при преобразовании логического шрифта в физический шрифт.
DWORD SetMapperFlags(DWORD dwFlag);
Parameters
dwFlag
Указывает, пытается ли карта шрифта соответствовать высоте и ширине шрифта устройству. Если это значение равно ASPECT_FILTERING, средство сопоставления выбирает только шрифты, чей x-аспект и y-аспект точно совпадают с шрифтами указанного устройства.
Return Value
Предыдущее значение флага сопоставления шрифтов.
Remarks
Приложение может использовать SetMapperFlags для того, чтобы средство сопоставления шрифтов пыталось выбрать только физический шрифт, который точно соответствует пропорции указанного устройства.
Приложение, использующее только растровые шрифты, может использовать SetMapperFlags функцию, чтобы убедиться, что шрифт, выбранный картой шрифта, является привлекательным и читаемым на указанном устройстве. Приложения, использующие масштабируемые шрифты (TrueType), обычно не используются SetMapperFlags.
Если физический шрифт не имеет пропорций, соответствующий спецификации в логическом шрифте, GDI выбирает новое соотношение аспектов и выбирает шрифт, соответствующий этому новому пропорции.
CDC::SetMiterLimit
Задает ограничение длины соединений miter для контекста устройства.
BOOL SetMiterLimit(float fMiterLimit);
Parameters
fMiterLimit
Задает новое ограничение miter для контекста устройства.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Длина мизера определяется как расстояние от пересечения стен линии внутри соединения к пересечению стен линии на стороне соединения. Ограничение митера — это максимально допустимое соотношение длины мизера к ширине линии. Значение по умолчанию — 10,0.
CDC::SetOutputDC
Вызовите эту функцию-член, чтобы задать контекст выходного устройства. m_hDC
virtual void SetOutputDC(HDC hDC);
Parameters
hDC
Контекст устройства Windows.
Remarks
Эта функция-член может вызываться только в том случае, если контекст устройства не был подключен к объекту CDC . Эта функция-член задает m_hDC , но не присоединяет контекст устройства к объекту CDC .
CDC::SetPixel
Задает пиксель в точке, указанной в ближайшем приближении цвета, указанного crColorв .
COLORREF SetPixel(
int x,
int y,
COLORREF crColor);
COLORREF SetPixel(
POINT point,
COLORREF crColor);
Parameters
x
Указывает логическую координату x для заданной точки.
y
Указывает логическую координату точки, заданной.
crColor
COLORREF Значение RGB, указывающее цвет, используемый для рисования точки. Сведения об этом значении см COLORREF . в пакете SDK для Windows.
point
Указывает логические координаты x-и y для заданной точки. Для этого параметра можно передать структуру POINTCPoint или объект.
Return Value
Значение RGB для цвета, нарисованного точкой. Это значение может отличаться от указанного, если crColor используется приближение этого цвета. Если функция завершается ошибкой (если точка находится за пределами области вырезки), возвращаемое значение равно -1.
Remarks
Точка должна находиться в регионе вырезки. Если точка не в регионе вырезки, функция ничего не делает.
Не все устройства поддерживают функцию SetPixel. Чтобы определить, поддерживает SetPixelли устройство, вызовите GetDeviceCaps функцию-член с индексом RASTERCAPS и проверьте возвращаемое значение флага RC_BITBLT .
CDC::SetPixelV
Задает пиксель в указанных координатах ближайшим приближением указанного цвета.
BOOL SetPixelV(
int x,
int y,
COLORREF crColor);
BOOL SetPixelV(
POINT point,
COLORREF crColor);
Parameters
x
Указывает координату x в логических единицах заданной точки.
y
Задает координату y в логических единицах заданной точки.
crColor
Указывает цвет, используемый для рисования точки.
point
Указывает логические координаты x-и y для заданной точки. Можно передать структуру POINT данных или CPoint объект для этого параметра.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Точка должна находиться как в области вырезки, так и в видимой части поверхности устройства. Не все устройства поддерживают функцию-член. Дополнительные сведения см RC_BITBLT . в функции-члене CDC::GetDeviceCaps .
SetPixelV быстрее, чем SetPixel из-за того, что он не должен возвращать значение цвета окрашенной точки.
CDC::SetPolyFillMode
Задает режим многоугольника.
int SetPolyFillMode(int nPolyFillMode);
Parameters
nPolyFillMode
Задает новый режим заполнения. Это значение может быть либо ALTERNATE либо WINDING. Задан режим по умолчанию в Windows ALTERNATE.
Return Value
Предыдущий режим заполнения, если выполнен успешно; в противном случае — 0.
Remarks
Если режим ALTERNATEмногоугольника заполнен, система заполняет область между нечетной и четной стороной многоугольника на каждой линии сканирования. То есть система заполняет область между первой и второй стороной, между третьей и четвертой стороной и т. д. Это режим по умолчанию.
При заполнении многоугольника WINDINGсистема использует направление, в котором рисуется фигура, чтобы определить, следует ли заполнить область. Каждый сегмент линии в многоугольнике рисуется либо по часовой стрелке, либо в направлении счетчика. Всякий раз, когда мнимая линия, рисуемая из заключаемой области к внешней части фигуры, проходит через сегмент по часовой стрелке, число увеличивается. Когда линия проходит через сегмент линии счетчика с часовой стрелкой, количество уменьшается. Область заполняется, если число ненулевое, когда линия достигает за пределами фигуры.
CDC::SetROP2
Задает текущий режим рисования.
int SetROP2(int nDrawMode);
Parameters
nDrawMode
Задает новый режим рисования. В качестве такой точки может выступать любой из следующих вариантов:
R2_BLACKПиксель всегда черный.R2_WHITEПиксель всегда белый.R2_NOPПиксель остается неизменным.R2_NOTПиксель — это обратное цвет экрана.R2_COPYPENПиксель — это цвет пера.R2_NOTCOPYPENПиксель является обратным цветом пера.R2_MERGEPENNOTПиксель — это сочетание цвета пера и обратного цвета экрана (окончательный пиксель = (~пиксель экрана)|пера).R2_MASKPENNOTПиксель — это сочетание цветов, общих для пера и обратного экрана (окончательный пиксель = (~пиксель экрана).&R2_MERGENOTPENПиксель — это сочетание цвета экрана и обратного цвета пера (окончательный пиксель = (~перо)|экрана).R2_MASKNOTPENПиксель — это сочетание цветов, общих как для экрана, так и обратного пера (окончательного пикселя =~(перо)&экрана).R2_MERGEPENПиксель — это сочетание цвета пера и цвета экрана (окончательный пиксель = пиксель пера|).R2_NOTMERGEPENПиксель является обратным цветомR2_MERGEPEN(окончательный пиксель =~(пиксель пера|)).R2_MASKPENПиксель — это сочетание цветов, общих для пера и экрана (окончательный пиксель = пиксель пера&).R2_NOTMASKPENПиксель является обратным цветомR2_MASKPEN(окончательный пиксель =~(пиксель пера&)).R2_XORPENПиксель — это сочетание цветов, которые находятся в перо или на экране, но не в обоих (окончательный пиксель = пиксель пера^).R2_NOTXORPENПиксель является обратным цветомR2_XORPEN(окончательный пиксель =~(пиксель пера^)).
Return Value
Предыдущий режим рисования.
Это может быть любое из значений, заданных в пакете SDK для Windows.
Remarks
Режим рисования указывает, как цвета пера и интерьер заполненных объектов объединяются с цветом, уже на поверхности отображения.
Режим рисования предназначен только для растровых устройств; Он не применяется к векторным устройствам. Режимы рисования — это двоичные коды операций растра, представляющие все возможные логические сочетания двух переменных, используя двоичные операторы&, |и (монопольные^), а также | унарную операцию~.
CDC::SetStretchBltMode
Задает режим растягивания растровых изображений для StretchBlt функции-члена.
int SetStretchBltMode(int nStretchMode);
Parameters
nStretchMode
Задает режим растяжения. В качестве такой точки может выступать любой из следующих вариантов:
| Value | Description |
|---|---|
BLACKONWHITE |
Выполняет логическое & действие с использованием значений цвета для исключенных и существующих пикселей. Если растровое изображение является монохромным растровым изображением, этот режим сохраняет черные пиксели за счет белых пикселей. |
COLORONCOLOR |
Удаляет пиксели. Этот режим удаляет все исключенные строки пикселей, не пытаясь сохранить их информацию. |
HALFTONE |
Сопоставляет пиксели из исходного прямоугольника в блоки пикселей в прямоугольнике назначения. Средний цвет по целевому блоку пикселей приблизит цвет исходного пикселя. |
После установки HALFTONE режима растяжения приложение должно вызвать функцию SetBrushOrgEx Win32, чтобы задать источник кисти. Если это не удается сделать, возникает несоответствие кисти. |
|
STRETCH_ANDSCANS |
Windows 95/98: то же самое, что и BLACKONWHITE |
STRETCH_DELETESCANS |
Windows 95/98: то же самое, что и COLORONCOLOR |
STRETCH_HALFTONE |
Windows 95/98: то же самое, что HALFTONEи . |
STRETCH_ORSCANS |
Windows 95/98: то же самое, что и WHITEONBLACK |
WHITEONBLACK |
Выполняет логическое | действие с использованием значений цвета для исключенных и существующих пикселей. Если растровое изображение является монохромным растровым изображением, этот режим сохраняет белые пиксели за счет черных пикселей. |
Return Value
Предыдущий режим растяжения. Он может иметь значение STRETCH_ANDSCANS, STRETCH_DELETESCANS или STRETCH_ORSCANS.
Remarks
Режим растягивания растровых карт определяет, как данные удаляются из растровых изображений, сжатых с помощью функции.
Режимы BLACKONWHITE(STRETCH_ANDSCANS) и WHITEONBLACK(STRETCH_ORSCANS) обычно используются для сохранения пикселей переднего плана в монохромных растровых изображениях. Режим COLORONCOLOR(STRETCH_DELETESCANS) обычно используется для сохранения цвета в растровых изображениях цвета.
В режиме требуется больше обработки исходного изображения, чем другие три режима. Это HALFTONE медленнее, чем другие, но создает более качественные изображения. Кроме того, SetBrushOrgEx необходимо вызвать после настройки HALFTONE режима, чтобы избежать несоответствия кисти.
Более растянутые режимы также могут быть доступны в зависимости от возможностей драйвера устройства.
CDC::SetTextAlign
Задает флаги выравнивания текста.
UINT SetTextAlign(UINT nFlags);
Parameters
nFlags
Задает флаги выравнивания текста. Флаги указывают связь между точкой и прямоугольником, ограничивающим текст. Точка может быть либо текущей позицией, либо координатами, указанными функцией вывода текста. Прямоугольник, ограничивающий текст, определяется смежными ячейками символов в текстовой строке. Параметр nFlags может быть одним или несколькими флагами из следующих трех категорий. Выберите только один флаг из каждой категории. Первая категория влияет на выравнивание текста в направлении x:
TA_CENTERВыравнивание точки с горизонтальным центром ограничивающего прямоугольника.TA_LEFTВыравнивание точки с левой стороны ограничивающего прямоугольника. Этот параметр принимается по умолчанию.TA_RIGHTВыравнивание точки с правой стороны ограничивающего прямоугольника.
Вторая категория влияет на выравнивание текста в направлении y:
TA_BASELINEВыравнивание точки с базовой линией выбранного шрифта.TA_BOTTOMВыравнивает точку с нижней частью ограничивающего прямоугольника.TA_TOPВыравнивает точку с верхней частью ограничивающего прямоугольника. Этот параметр принимается по умолчанию.
Третья категория определяет, обновляется ли текущая позиция при написании текста:
TA_NOUPDATECPНе обновляет текущую позицию после каждого вызова функции вывода текста. Этот параметр принимается по умолчанию.TA_UPDATECPОбновляет текущую позицию x после каждого вызова функции вывода текста. Новая позиция находится в правой части ограничивающего прямоугольника для текста. При установке этого флага координаты, указанные в вызовахTextOutфункции-члена, игнорируются.
Return Value
Предыдущий параметр выравнивания текста при успешном выполнении. Байт низкого порядка содержит горизонтальный параметр, а байт высокого порядка содержит вертикальный параметр; в противном случае — 0.
Remarks
TextOut Функции-члены ExtTextOut используют эти флаги при расположении строки текста на дисплее или устройстве. Флаги указывают связь между определенной точкой и прямоугольником, ограничивающим текст. Координаты этой точки передаются в качестве параметров TextOut функции-члена. Прямоугольник, ограничивающий текст, формируется смежными ячейками символов в текстовой строке.
CDC::SetTextCharacterExtra
Задает количество интервалов между диаграммами.
int SetTextCharacterExtra(int nCharExtra);
Parameters
nCharExtra
Указывает объем дополнительного пространства (в логических единицах), добавляемого к каждому символу. Если текущий режим сопоставления не MM_TEXTзадан, nCharExtra преобразуется и округляется до ближайшего пикселя.
Return Value
Объем предыдущего интервала между диаграммами.
Remarks
GDI добавляет этот интервал к каждому символу, включая символы останова, при записи строки текста в контекст устройства. Значение по умолчанию для интервала между диаграммами равно 0.
CDC::SetTextColor
Задает цвет текста указанным цветом.
virtual COLORREF SetTextColor(COLORREF crColor);
Parameters
crColor
Задает цвет текста в виде значения цвета RGB.
Return Value
Значение RGB для предыдущего цвета текста.
Remarks
Система использует этот цвет текста при написании текста в контексте устройства, а также при преобразовании растровых изображений между контекстами устройства цвета и монохромного устройства.
Если устройство не может представлять указанный цвет, система задает цвет текста ближайшим физическим цветом. Цвет фона для символа определяется функциями-членами SetBkColor и SetBkMode функциями-членами.
Example
Пример см. в примере CWnd::OnCtlColor.
CDC::SetTextJustification
Добавляет пробел в символы останова в строке.
int SetTextJustification(
int nBreakExtra,
int nBreakCount);
Parameters
nBreakExtra
Указывает общее дополнительное пространство для добавления в строку текста (в логических единицах). Если текущий режим сопоставления не MM_TEXTявляется, значение, заданное этим параметром, преобразуется в текущий режим сопоставления и округляется до ближайшей единицы устройства.
nBreakCount
Указывает количество символов останова в строке.
Return Value
Если функция выполнена успешно; в противном случае — 0.
Remarks
Приложение может использовать GetTextMetrics функции-члены для получения символа разрыва шрифта.
SetTextJustification После вызова функции-члена вызов функции вывода текста (напримерTextOut) распределяет указанное дополнительное пространство равномерно между указанным числом символов разрыва. Символ разрыва обычно является символом пробела (ASCII 32), но может быть определен шрифтом как другим символом.
Функция-член GetTextExtent обычно используется с SetTextJustification.
GetTextExtent вычисляет ширину заданной строки перед выравниванием. Приложение может определить, сколько места нужно указать в nBreakExtra параметре, вычитая значение, возвращаемое GetTextExtent из ширины строки после выравнивания.
Функцию SetTextJustification можно использовать для выравнивания строки, содержащей несколько запусков в разных шрифтах. В этом случае строка должна быть создана по фрагменту путем выравнивания и записи каждого запуска отдельно.
Так как ошибки округления могут возникать во время выравнивания, система сохраняет запущенный термин ошибки, определяющий текущую ошибку. При выравнивании строки, содержащей несколько запусков, GetTextExtent автоматически использует этот термин ошибки при вычислении степени следующего запуска. Это позволяет функции вывода текста смешать ошибку в новом запуске.
После выравнивания каждой строки этот термин ошибки должен быть очищен, чтобы предотвратить его включение в следующую строку. Термин можно очистить, вызвав SetTextJustificationnBreakExtra значение 0.
CDC::SetViewportExt
Задает x-и y-экстенты окна просмотра контекста устройства.
virtual CSize SetViewportExt(
int cx,
int cy);
CSize SetViewportExt(SIZE size);
Parameters
cx
Указывает x-экстент окна просмотра (в единицах устройства).
cy
Указывает y-экстент окна просмотра (в единицах устройства).
size
Указывает x-и y-экстенты окна просмотра (в единицах устройства).
Return Value
Предыдущие экстенты окна просмотра в качестве CSize объекта. При возникновении ошибки координаты x-и y возвращаемого CSize объекта имеют значение 0.
Remarks
Окно просмотра вместе с окном контекста устройства определяет, как GDI сопоставляет точки в логической системе координат с точками в системе координат фактического устройства. Другими словами, они определяют, как GDI преобразует логические координаты в координаты устройства.
Если заданы следующие режимы сопоставления, вызовы SetWindowExt и SetViewportExt игнорируются:
MM_HIENGLISH |
MM_LOMETRIC |
|---|---|
MM_HIMETRIC |
MM_TEXT |
MM_LOENGLISH |
MM_TWIPS |
При MM_ISOTROPIC установке режима приложение должно вызывать функцию-член перед вызовом SetWindowExtSetViewportExt.
Example
Пример см. в примере CView::OnPrepareDC.
CDC::SetViewportOrg
Задает источник окна просмотра контекста устройства.
virtual CPoint SetViewportOrg(
int x,
int y);
CPoint SetViewportOrg(POINT point);
Parameters
x
Указывает координату x (в единицах устройства) источника окна просмотра. Значение должно находиться в диапазоне системы координат устройства.
y
Указывает координату y (в единицах устройства) источника окна просмотра. Значение должно находиться в диапазоне системы координат устройства.
point
Указывает источник окна просмотра. Значения должны находиться в диапазоне системы координат устройства. Для этого параметра можно передать структуру POINTCPoint или объект.
Return Value
Предыдущий источник окна просмотра (в координатах устройства) в качестве CPoint объекта.
Remarks
Окно просмотра вместе с окном контекста устройства определяет, как GDI сопоставляет точки в логической системе координат с точками в системе координат фактического устройства. Другими словами, они определяют, как GDI преобразует логические координаты в координаты устройства.
Источник окна просмотра отмечает точку в системе координат устройства, с которой GDI сопоставляет источник окна, точку в логической системе координат, указанной SetWindowOrg функцией-членом. GDI сопоставляет все остальные точки, выполнив тот же процесс, необходимый для сопоставления источника окна с источником окна. Например, все точки в круге вокруг точки в источнике окна будут находиться в круге вокруг точки в источнике представления. Аналогичным образом все точки в строке, которая проходит через источник окна, будет находиться в строке, которая проходит через источник окна просмотра.
Example
Пример см. в примере CView::OnPrepareDC.
CDC::SetWindowExt
Задает x-и y-экстенты окна, связанного с контекстом устройства.
virtual CSize SetWindowExt(
int cx,
int cy);
CSize SetWindowExt(SIZE size);
Parameters
cx
Указывает степень x (в логических единицах) окна.
cy
Указывает степень y (в логических единицах) окна.
size
Задает экстенты x и y (в логических единицах) окна.
Return Value
Предыдущие экстенты окна (в логических единицах) в качестве CSize объекта. Если возникает ошибка, координаты x-и y возвращаемого CSize объекта имеют значение 0.
Remarks
Окно вместе с окном представления контекста устройства определяет, как GDI сопоставляет точки в логической системе координат с точками в системе координат устройства.
Если заданы следующие режимы сопоставления, вызовы SetWindowExt и SetViewportExt функции игнорируются:
MM_HIENGLISHMM_HIMETRICMM_LOENGLISHMM_LOMETRICMM_TEXTMM_TWIPS
При MM_ISOTROPIC установке режима приложение должно вызвать функцию-член перед вызовом SetWindowExtSetViewportExt.
Example
Пример см. в примере CView::OnPrepareDC.
CDC::SetWindowOrg
Задает источник окна контекста устройства.
CPoint SetWindowOrg(
int x,
int y);
CPoint SetWindowOrg(POINT point);
Parameters
x
Задает логическую координату x нового источника окна.
y
Задает логическую координату y нового источника окна.
point
Задает логические координаты нового источника окна. Для этого параметра можно передать структуру POINTCPoint или объект.
Return Value
Предыдущий источник окна в качестве CPoint объекта.
Remarks
Окно вместе с окном представления контекста устройства определяет, как GDI сопоставляет точки в логической системе координат с точками в системе координат устройства.
Источник окна помечает точку в системе логических координат, из которой GDI сопоставляет источник окна просмотра, точку в системе координат устройства, указанной SetWindowOrg функцией. GDI сопоставляет все остальные точки, выполнив тот же процесс, необходимый для сопоставления источника окна с источником окна. Например, все точки в круге вокруг точки в источнике окна будут находиться в круге вокруг точки в источнике представления. Аналогичным образом все точки в строке, которая проходит через источник окна, будет находиться в строке, которая проходит через источник окна просмотра.
CDC::SetWorldTransform
Задает двухмерное линейное преобразование между пространством мира и пространством страниц для указанного контекста устройства. Это преобразование можно использовать для масштабирования, поворота, стрижения или преобразования выходных данных графики.
BOOL SetWorldTransform(const XFORM& rXform);
Parameters
rXform
Ссылка на структуру XFORM , содержащую данные преобразования.
Return Value
Возвращает ненулевое значение при успешном выполнении.
Возвращает значение 0 при сбое.
Чтобы получить расширенные сведения об ошибке, вызовите функцию GetLastError.
Remarks
Этот метод упаковывает функцию SetWorldTransformGDI Windows.
CDC::StartDoc
Сообщает драйверу устройства о запуске нового задания печати и о том, что все последующие StartPage вызовы EndPage должны быть сплочены в одном задании до тех пор, пока EndDoc не возникнет вызов.
int StartDoc(LPDOCINFO lpDocInfo);
int StartDoc(LPCTSTR lpszDocName);
Parameters
lpDocInfo
Указывает на DOCINFO структуру, содержащую имя файла документа и имя выходного файла.
lpszDocName
Указатель на строку, содержащую имя файла документа.
Return Value
Если функция выполнена успешно, возвращаемое значение больше нуля. Это значение является идентификатором задания печати для документа.
Если функция завершается ошибкой, возвращаемое значение меньше нуля или равно нулю.
Remarks
Это гарантирует, что документы, длиннее одной страницы, не будут перемежаться с другими заданиями.
Для Windows версии 3.1 и более поздних версий эта функция заменяет STARTDOC экран-экран принтера. Использование этой функции гарантирует, что документы, содержащие несколько страниц, не перемежаются с другими заданиями печати.
StartDoc не следует использовать внутри метафайлов.
Example
Этот фрагмент кода получает принтер по умолчанию, открывает задание печати и спулает одну страницу с "Hello, World!" на ней. Так как текст, напечатанный этим кодом, не масштабируется до логических единиц принтера, выходной текст может находиться в таких небольших буквах, что результат недоступен. Функции масштабирования CDC, такие как SetMapMode, SetViewportOrgи SetWindowExt, можно использовать для исправления масштабирования.
void CDCView::DoStartDoc()
{
// get the default printer
CPrintDialog dlg(FALSE);
dlg.GetDefaults();
// is a default printer set up?
HDC hdcPrinter = dlg.GetPrinterDC();
if (hdcPrinter == NULL)
{
MessageBox(_T("Buy a printer!"));
}
else
{
// create a CDC and attach it to the default printer
CDC dcPrinter;
dcPrinter.Attach(hdcPrinter);
// call StartDoc() to begin printing
DOCINFO docinfo;
memset(&docinfo, 0, sizeof(docinfo));
docinfo.cbSize = sizeof(docinfo);
docinfo.lpszDocName = _T("CDC::StartDoc() Code Fragment");
// if it fails, complain and exit gracefully
if (dcPrinter.StartDoc(&docinfo) < 0)
{
MessageBox(_T("Printer wouldn't initialize"));
}
else
{
// start a page
if (dcPrinter.StartPage() < 0)
{
MessageBox(_T("Could not start page"));
dcPrinter.AbortDoc();
}
else
{
// actually do some printing
CGdiObject *pOldFont = dcPrinter.SelectStockObject(SYSTEM_FONT);
dcPrinter.TextOut(50, 50, _T("Hello World!"), 12);
dcPrinter.EndPage();
dcPrinter.EndDoc();
dcPrinter.SelectObject(pOldFont);
}
}
}
}
CDC::StartPage
Вызовите эту функцию-член, чтобы подготовить драйвер принтера для получения данных.
int StartPage();
Return Value
Больше или равно 0, если функция выполнена успешно, или отрицательное значение, если произошла ошибка.
Remarks
StartPage
NEWFRAME заменяет и BANDINFO бежит.
Общие сведения о последовательности вызовов печати см. в функции-члене StartDoc .
Система отключает ResetDC функцию-член между вызовами StartPage и EndPage.
Example
Пример см. в примере CDC::StartDoc.
CDC::StretchBlt
Копирует точечный рисунок из исходного прямоугольника в прямоугольник назначения, при необходимости растягивая или сжимая точечный рисунок в соответствии с размерами прямоугольника назначения.
BOOL StretchBlt(
int x,
int y,
int nWidth,
int nHeight,
CDC* pSrcDC,
int xSrc,
int ySrc,
int nSrcWidth,
int nSrcHeight,
DWORD dwRop);
Parameters
x
Указывает x-координату (в логических единицах) левого верхнего угла прямоугольника назначения.
y
Указывает y-координату (в логических единицах) левого верхнего угла прямоугольника назначения.
nWidth
Задает ширину прямоугольника назначения (в логических единицах).
nHeight
Задает высоту прямоугольника назначения (в логических единицах).
pSrcDC
Задает контекст исходного устройства.
xSrc
Указывает x-координату (в логических единицах) левого верхнего угла исходного прямоугольника.
ySrc
Указывает y-координату (в логических единицах) левого верхнего угла исходного прямоугольника.
nSrcWidth
Задает ширину исходного прямоугольника (в логических единицах).
nSrcHeight
Задает высоту исходного прямоугольника (в логических единицах).
dwRop
Определяет подлежащую выполнению растровую операцию. Коды растровых операций определяют, как GDI сочетает цвета в операциях вывода, где используется текущая кисть, возможный исходный точечный рисунок и точечный рисунок назначения. Этот параметр может иметь одно из следующих значений:
BLACKNESSПревращает все выходные данные черным.DSTINVERTИнвертирует точечный рисунок назначения.MERGECOPYОбъединяет шаблон и исходное растровое изображение с помощью логического оператора AND .MERGEPAINTОбъединяет инвертированную исходную растровую карту с целевой растровой картой с помощью логического оператора OR .NOTSRCCOPYКопирует перевернутый исходный растровый рисунок в место назначения.NOTSRCERASEИнвертирует результат объединения целевых и исходных растровых изображений с помощью логического оператора OR .PATCOPYКопирует шаблон в точечный рисунок назначения.PATINVERTОбъединяет растровое изображение назначения с шаблоном с помощью логического оператора XOR .PATPAINTОбъединяет инвертированную исходную растровую карту с шаблоном с помощью логического оператора OR . Объединяет результат этой операции с целевым растровым изображением с помощью логического оператора OR .SRCANDОбъединяет пиксели целевого и исходного растровых изображений с помощью логического оператора AND .SRCCOPYКопирует исходное растровое изображение в целевой растровый рисунок.SRCERASEИнвертирует точечный рисунок назначения и объединяет результат с исходным растровым изображением с помощью оператора Boolean AND .SRCINVERTОбъединяет пиксели целевого и исходного растровых изображений с помощью логического оператора XOR .SRCPAINTОбъединяет пиксели целевого и исходного растровых изображений с помощью логического оператора OR .WHITENESSПреобразует весь выходной белый цвет.
Return Value
Ненулевое значение, если точечный рисунок рисуется, в противном случае — 0.
Remarks
Эта функция использует режим растягивания контекста устройства назначения (задается SetStretchBltMode), чтобы определить, как необходимо растянуть или сжать точечный рисунок.
Функция StretchBlt перемещает растровое изображение с исходного устройства, заданного pSrcDC на целевое устройство, представленное объектом контекста устройства, который вызывается функцией-член. Параметры xSrcySrcnSrcWidth, и параметры определяют верхний левый угол и nSrcHeight размеры исходного прямоугольника. Значения x, ynWidthи nHeight параметры дают верхний левый угол и размеры прямоугольника назначения. Операция растра, указанная с помощью dwRop определения того, как исходный растровый рисунок и биты уже объединяются на целевом устройстве.
Функция StretchBlt создает зеркальное изображение растрового изображения, если признаки nSrcWidth и nWidthnSrcHeightnHeight параметры отличаются. Если nSrcWidth и nWidth имеют разные знаки, функция создает зеркальное изображение растрового изображения вдоль оси x. Если nSrcHeight и nHeight имеют разные знаки, функция создает зеркальное изображение растрового изображения вдоль оси Y.
Функция StretchBlt растягивает или сжимает исходный точечный рисунок, а затем копирует результат в место назначения. Если шаблон должен быть объединен с результатом, он не будет объединен до тех пор, пока растягиваемое исходное растровое изображение будет скопировано в место назначения. Если используется кисть, это выбранная кисть в контексте целевого устройства. Координаты назначения преобразуются в зависимости от контекста устройства назначения; исходные координаты преобразуются в зависимости от контекста исходного устройства.
Если целевые, исходные и шаблонные растровые изображения не имеют одного и того же формата цвета, StretchBlt преобразовывает исходные и шаблонные растровые изображения в соответствии с целевыми растровыми изображениями. В преобразовании используются цвета переднего плана и фона контекста устройства назначения.
Если StretchBlt необходимо преобразовать монохромный точечный рисунок в цвет, белые биты (1) задаются в качестве значения цвета фона, а черные биты (0) — в качестве цвета переднего плана. Для преобразования цветов в монохромный режим определяются пиксели, сопоставляющие цвет фона белому (1), а все остальные пиксели становятся черными (0). Используются цвета переднего плана и фона контекста устройства назначения с цветом.
Не все устройства поддерживают функцию StretchBlt. Чтобы определить, поддерживает StretchBltли устройство, вызовите GetDeviceCaps функцию-член с индексом RASTERCAPS и проверьте возвращаемое значение флага RC_STRETCHBLT .
CDC::StrokeAndFillPath
Закрывает все открытые фигуры в пути, перечеркивает контур пути с помощью текущего пера и заполняет его интерьер с помощью текущей кисти.
BOOL StrokeAndFillPath();
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Контекст устройства должен содержать закрытый путь.
StrokeAndFillPath Функция-член имеет тот же эффект, что и закрытие всех открытых фигур в пути, а также поглаживание и заполнение пути отдельно, за исключением того, что заполненная область не перекрывает почеркнутую область, даже если перо широкое.
CDC::StrokePath
Отрисовывает указанный путь с помощью текущего пера.
BOOL StrokePath();
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Контекст устройства должен содержать закрытый путь.
CDC::TabbedTextOut
Вызовите эту функцию-член, чтобы написать символьную строку в указанном расположении, разверните вкладки к значениям, указанным в массиве позиций табуляции стоп.
virtual CSize TabbedTextOut(
int x,
int y,
LPCTSTR lpszString,
int nCount,
int nTabPositions,
LPINT lpnTabStopPositions,
int nTabOrigin);
CSize TabbedTextOut(
int x,
int y,
const CString& str,
int nTabPositions,
LPINT lpnTabStopPositions,
int nTabOrigin);
Parameters
x
Задает логическую координату x начальной точки строки.
y
Задает логическую координату y начальной точки строки.
lpszString
Указывает на строку символа для рисования. Можно передать указатель на массив символов или CString объект для этого параметра.
nCount
Указывает длину строки , на которую указывает lpszString.
nTabPositions
Указывает количество значений в массиве позиций табуляции стоп.
lpnTabStopPositions
Указывает на массив, содержащий позиции табуляции (в логических единицах). Остановки табуляции должны быть отсортированы по возрастанию порядка; Наименьшее x-значение должно быть первым элементом в массиве.
nTabOrigin
Задает координату x начальной позиции, из которой развернуты вкладки (в логических единицах).
str
CString Объект, содержащий указанные символы.
Return Value
Размеры строки (в логических единицах) в качестве CSize объекта.
Remarks
Текст записывается в выбранном в данный момент шрифте. Если nTabPositions значение равно 0 и lpnTabStopPositionsNULLимеет значение, вкладки расширяются до восьми раз средней ширины символов.
Если nTabPositions значение равно 1, вкладка останавливается по расстоянию, указанному первым значением в массиве lpnTabStopPositions .
lpnTabStopPositions Если массив содержит несколько значений, то для каждого значения в массиве устанавливается остановка табуляции до числа, указанного в параметреnTabPositions. Параметр nTabOrigin позволяет приложению TabbedTextOut вызывать функцию несколько раз для одной строки. Если приложение вызывает функцию более одного раза с nTabOrigin заданным значением каждый раз, функция развертывает все вкладки относительно позиции, указанной в параметре nTabOrigin.
По умолчанию текущая позиция не используется или обновляется функцией. Если приложению необходимо обновить текущую позицию при вызове функции, приложение может вызвать SetTextAlign функцию-член с nFlags заданным значением TA_UPDATECP. Если этот флаг задан, Windows игнорирует x и y параметры при последующих вызовах TabbedTextOut, используя текущую позицию.
CDC::TextOut
Записывает символьную строку в указанном месте, используя текущий выбранный шрифт.
virtual BOOL TextOut(
int x,
int y,
LPCTSTR lpszString,
int nCount);
BOOL TextOut(
int x,
int y,
const CString& str);
Parameters
x
Указывает логическую координату X начальной точки текста.
y
Указывает логическую координату Y начальной точки текста.
lpszString
Указывает на строку символов, которую необходимо нарисовать.
nCount
Указывает количество знаков в строке.
str
Объект CString, который содержит символы, которые необходимо нарисовать.
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Начальные координаты символа в левом верхнем углу ячейки символов. По умолчанию текущая позиция не используется или обновляется функцией.
Если приложению необходимо обновить текущую позицию при вызове TextOut, приложение может вызвать SetTextAlign функцию-член с заданным nFlags значением TA_UPDATECP. Если этот флаг задан, Windows игнорирует x и y параметры при последующих вызовах TextOut, используя текущую позицию.
Example
Пример см. в примере CDC::BeginPath.
CDC::TransparentBlt
Вызовите эту функцию-член, чтобы передать битовый блок данных цвета, который соответствует прямоугольнику пикселей из указанного контекста исходного устройства в контекст конечного устройства.
BOOL TransparentBlt(
int xDest,
int yDest,
int nDestWidth,
int nDestHeight,
CDC* pSrcDC,
int xSrc,
int ySrc,
int nSrcWidth,
int nSrcHeight,
UINT clrTransparent);
Parameters
xDest
Задает координату x в логических единицах верхнего левого угла прямоугольника назначения.
yDest
Задает координату y в логических единицах верхнего левого угла прямоугольника назначения.
nDestWidth
Задает ширину в логических единицах целевого прямоугольника.
nDestHeight
Задает высоту в логических единицах прямоугольника назначения.
pSrcDC
Указатель на контекст исходного устройства.
xSrc
Задает координату x в логических единицах исходного прямоугольника.
ySrc
Задает координату y в логических единицах исходного прямоугольника.
nSrcWidth
Задает ширину в логических единицах исходного прямоугольника.
nSrcHeight
Задает высоту в логических единицах исходного прямоугольника.
clrTransparent
Цвет RGB в исходном растровом рисунке, который будет рассматриваться как прозрачный.
Return Value
Значение TRUE в случае успешного выполнения; в противном случае — значение FALSE.
Remarks
TransparentBlt обеспечивает прозрачность; т. е. цвет RGB, указанный clrTransparent отрисовывается прозрачным для передачи.
Дополнительные сведения см TransparentBlt . в пакете SDK для Windows.
CDC::UpdateColors
Обновляет клиентская область контекста устройства, сопоставляя текущие цвета в клиентской области с системной палитрой на основе пикселей по пикселям.
void UpdateColors();
Remarks
Неактивное окно с реализованной логической палитрой может вызываться UpdateColors как альтернатива перерисовке клиентской области при изменении системной палитры.
Дополнительные сведения об использовании цветовой палитры см UpdateColors . в пакете SDK для Windows.
Функция-член UpdateColors обычно обновляет клиентская область быстрее, чем перерисовка области. Однако, поскольку функция выполняет преобразование цветов на основе цвета каждого пикселя до изменения системной палитры, каждый вызов этой функции приводит к потере некоторой точности цвета.
CDC::WidenPath
Переопределяет текущий путь в качестве области, которая будет окрашена, если путь был обрисован с помощью пера, выбранного в данный момент в контексте устройства.
BOOL WidenPath();
Return Value
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Remarks
Эта функция выполняется успешно, только если текущее перо является геометрическим пером, созданным второй версией функции-члена, или если перо создается с первой версией CreatePenCreatePen и имеет ширину в единицах устройства больше 1. Контекст устройства должен содержать закрытый путь. Любые кривые Bzier в пути преобразуются в последовательности прямых линий, приблизиющих расширенные кривые. Таким образом, кривые Bzier остаются в пути после WidenPath вызова.
See also
CObject Класс
Hierarchy Chart
CPaintDC Класс
CWindowDC Класс
CClientDC Класс
CMetaFileDC Класс