Класс CDC
Определяет класс объектов контекста устройства.
Синтаксис
class CDC : public CObject
Участники
Открытые конструкторы
Имя | Описание |
---|---|
CDC::CDC |
Формирует объект CDC . |
Открытые методы
Имя | Описание |
---|---|
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 |
Переопределяет текущий путь в качестве области, которая будет окрашена, если путь был обрисован с помощью пера, выбранного в данный момент в контексте устройства. |
Открытые операторы
Имя | Описание |
---|---|
CDC::operator HDC |
Извлекает дескриптор контекста устройства. |
Открытые члены данных
Имя | Описание |
---|---|
CDC::m_hAttribDC |
Контекст атрибута устройства, используемый этим CDC объектом. |
CDC::m_hDC |
Контекст выходного устройства, используемый этим CDC объектом. |
Замечания
Объект CDC
предоставляет функции-члены для работы с контекстом устройства, например с дисплеем или принтером, и членами для работы с контекстом отображения, связанным с клиентской областью окна.
Выполните все рисование через функции-члены CDC
объекта. Класс предоставляет функции-члены для операций с контекстом устройства, работа с инструментами рисования, выбором объектов GDI и использованием цветов и палитр. Он также предоставляет функции-члены для получения и настройки атрибутов рисования, сопоставления, работы с окном, работы с экстентом окна, преобразования координат, работы с регионами, вырезки, линий рисования и рисования простых фигур, многоточия и многоугольников. Функции-члены также предоставляются для рисования текста, работы с шрифтами, использования экранов принтера, прокрутки и воспроизведения метафайлов.
Чтобы использовать CDC
объект, создайте его, а затем вызовите его функции-члены, которые параллельные функции Windows, использующие контексты устройств.
Примечание.
В Windows 95/98 все координаты экрана ограничены 16 битами. Таким образом, передаваемая int
CDC
в функцию-член, должна находиться в диапазоне от -32768 до 32767.
Для конкретных использования библиотека классов Microsoft Foundation предоставляет несколько классов, производных от CDC
. CPaintDC
инкапсулирует вызовы BeginPaint
и EndPaint
. CClientDC
управляет контекстом отображения, связанным с клиентской областью окна. CWindowDC
управляет контекстом отображения, связанным со всем окном, включая его кадр и элементы управления. CMetaFileDC
связывает контекст устройства с метафайлом.
CDC
предоставляет две функции-члены GetLayout
и SetLayout
для восстановления макета контекста устройства, который не наследует его макет из окна. Такая ориентация справа налево необходима для приложений, написанных для культур, таких как арабский или иврит, где макет символа не является европейским стандартом.
CDC
содержит два контекста m_hDC
CDC
устройства и m_hAttribDC
, который при создании объекта ссылается на одно и то же устройство. CDC
направляет все выходные вызовы GDI и m_hDC
большинство вызовов m_hAttribDC
GDI атрибутов. (Пример вызова атрибута — GetTextColor
это SetTextColor
вызов выходных данных.)
Например, платформа использует эти два контекста устройства для реализации CMetaFileDC
объекта, который будет отправлять выходные данные в метафайл при чтении атрибутов с физического устройства. Предварительная версия печати реализована в платформе аналогичным образом. Вы также можете использовать два контекста устройства аналогичным образом в коде для конкретного приложения.
Иногда могут потребоваться текстовые метрики из m_hDC
m_hAttribDC
контекстов устройств. Следующие пары функций обеспечивают эту возможность:
Использует m_hAttribDC | Использует m_hDC |
---|---|
GetTextExtent |
GetOutputTextExtent |
GetTabbedTextExtent |
GetOutputTabbedTextExtent |
GetTextMetrics |
GetOutputTextMetrics |
GetCharWidth |
GetOutputCharWidth |
Дополнительные сведения см. в CDC
разделе "Контексты устройств".
Иерархия наследования
CDC
Требования
Заголовок: afxwin.h
CDC::AbortDoc
Завершает текущее задание печати и удаляет все, что приложение записывается на устройство с момента последнего вызова StartDoc
функции-члена.
int AbortDoc();
Возвращаемое значение
Значение больше или равно 0 при успешном выполнении или отрицательное значение, если произошла ошибка. В следующем списке показаны распространенные значения ошибок и их значения:
SP_ERROR
Общая ошибка.SP_OUTOFDISK
Недостаточно места на диске в настоящее время доступно для spooling, и больше места не станет доступным.SP_OUTOFMEMORY
Недостаточно памяти доступно для spooling.SP_USERABORT
Пользователь завершил задание с помощью диспетчера печати.
Замечания
Эта функция-член заменяет ABORTDOC
экран-экран принтера.
AbortDoc
следует использовать для завершения следующих действий:
Операции печати, не указывающие функцию прерывания с помощью
SetAbortProc
.Операции печати, которые еще не достигли первого
NEWFRAME
илиNEXTBAND
escape-вызова.
Если приложение сталкивается с ошибкой печати или отмененной операцией печати, она не должна пытаться завершить операцию с помощью EndDoc
функций класса или AbortDoc
членов.CDC
GDI автоматически завершает операцию перед возвратом значения ошибки.
Если приложение отображает диалоговое окно, позволяющее пользователю отменить операцию печати, перед уничтожением диалогового окна он должен вызываться AbortDoc
.
Если диспетчер печати использовался для запуска задания печати, вызов AbortDoc
удаляет все задание спула, принтер не получает ничего. Если диспетчер печати не использовался для запуска задания печати, данные, возможно, были отправлены на принтер до AbortDoc
вызова. В этом случае драйвер принтера сбросил принтер (по возможности) и закрыл задание печати.
Пример
Пример см. в примере CDC::StartDoc
.
CDC::AbortPath
Закрывает и удаляет все пути в контексте устройства.
BOOL AbortPath();
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Если в контексте устройства есть открытая скобка пути, путь закрывается и путь удаляется. Если в контексте устройства есть закрытый путь, путь удаляется.
CDC::AddMetaFileComment
Копирует комментарий из буфера в указанный метафайл расширенного формата.
BOOL AddMetaFileComment(
UINT nDataSize,
const BYTE* pCommentData);
Параметры
nDataSize
Указывает длину буфера комментариев в байтах.
pCommentData
Указывает на буфер, содержащий комментарий.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Комментарий может включать любую частную информацию, например источник рисунка и дату его создания. Комментарий должен начинаться с подписи приложения, а затем данных. Примечания не должны содержать данные о позиции. Данные, относящиеся к позиции, указывают расположение записи и не должны включаться, так как один метафайл может быть внедрен в другой метафайл. Эту функцию можно использовать только с расширенными метафайлами.
CDC::AlphaBlend
Вызовите эту функцию-член, чтобы отобразить растровые изображения с прозрачными или полутранспарентными пикселями.
BOOL AlphaBlend(
int xDest,
int yDest,
int nDestWidth,
int nDestHeight,
CDC* pSrcDC,
int xSrc,
int ySrc,
int nSrcWidth,
int nSrcHeight,
BLENDFUNCTION blend);
Параметры
xDest
Задает координату x в логических единицах верхнего левого угла прямоугольника назначения.
yDest
Задает координату y в логических единицах верхнего левого угла прямоугольника назначения.
nDestWidth
Задает ширину в логических единицах целевого прямоугольника.
nDestHeight
Задает высоту в логических единицах прямоугольника назначения.
pSrcDC
Указатель на контекст исходного устройства.
xSrc
Задает координату x в логических единицах левого верхнего угла исходного прямоугольника.
ySrc
Задает координату y в логических единицах верхнего левого угла исходного прямоугольника.
nSrcWidth
Задает ширину в логических единицах исходного прямоугольника.
nSrcHeight
Задает высоту в логических единицах исходного прямоугольника.
blend
Указывает структуру BLENDFUNCTION
.
Возвращаемое значение
Значение TRUE
в случае успешного выполнения; в противном случае — значение FALSE
.
Замечания
Дополнительные сведения см AlphaBlend
. в пакете SDK для Windows.
CDC::AngleArc
Рисует сегмент линии и дугу.
BOOL AngleArc(
int x,
int y,
int nRadius,
float fStartAngle,
float fSweepAngle);
Параметры
x
Задает логическую координату x центра круга.
y
Задает логическую координату Y центра круга.
nRadius
Указывает радиус круга в логических единицах. Это значение должно быть положительным.
fStartAngle
Задает начальный угол в градусах относительно оси x.
fSweepAngle
Задает угол отвертки в градусах относительно начального угла.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Сегмент линии рисуется от текущей позиции к началу дуги. Дуга рисуется вдоль периметра круга с заданным радиусом и центром. Длина дуги определяется заданными углами начала и свертки.
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);
Параметры
x1
Задает координату x левого верхнего угла ограничивающего прямоугольника (в логических единицах).
y1
Задает координату y верхнего левого угла ограничивающего прямоугольника (в логических единицах).
x2
Задает координату x правого нижнего угла ограничивающего прямоугольника (в логических единицах).
y2
Указывает координату Y правого нижнего угла ограничивающего прямоугольника (в логических единицах).
x3
Указывает координату x точки, которая определяет начальную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.
y3
Указывает координату y точки, которая определяет начальную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.
x4
Задает координату x точки, определяющей конечную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.
y4
Указывает координату y точки, определяющей конечную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.
lpRect
Указывает ограничивающий прямоугольник (в логических единицах). Для этого параметра можно передать LPRECT
объект или CRect
объект.
ptStart
Задает координаты x-и y точки, определяющей начальную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге. Для этого параметра можно передать структуру POINT
CPoint
или объект.
ptEnd
Задает координаты x-и y точки, определяющей конечную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге. Для этого параметра можно передать структуру POINT
CPoint
или объект.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Дуга, рисуемая с помощью функции, является сегментом многоточия, определенного заданным ограничивающим прямоугольником.
Фактический отправной точкой дуги является точка, в которой луч, нарисованный из центра ограничивающего прямоугольника через указанную начальную точку пересекает многоточие. Фактическая конечная точка дуги — это точка, в которой луч, нарисованный из центра ограничивающего прямоугольника через указанную конечную точку пересекается с многоточием. Дуга рисуется в направлении счетчика. Так как дуга не является закрытой фигурой, она не заполнена. Ширина и высота прямоугольника должны быть больше 2 единиц и меньше 32 767 единиц.
Пример
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);
Параметры
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
объект для этого параметра.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Эта функция аналогична CDC::Arc
, за исключением того, что текущая позиция обновляется. Точки (, y1
) и (x1
x2
), y2
указывают ограничивающий прямоугольник. Многоточие, сформированное заданным ограничивающим прямоугольником, определяет кривую дуги. Дуга расширяется по счетчику (направление дуги по умолчанию) от точки, в которой она пересекает радиальную линию из центра ограничивающего прямоугольника (*x3*
, y3
). Дуга заканчивается, где он пересекает радиальную линию от центра ограничивающего прямоугольника к ( x4
, y4
). Если начальная точка и конечная точка совпадают, то рисуется полный многоточие.
Линия рисуется от текущей позиции к начальной точке дуги. Если ошибка не возникает, текущая позиция устанавливается в конечную точку дуги. Дуга рисуется с помощью текущего пера; он не заполнен.
CDC::Attach
Используйте эту функцию-член для присоединения hDC
объекта к объекту CDC
.
BOOL Attach(HDC hDC);
Параметры
hDC
Контекст устройства Windows.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Он hDC
хранится как в контексте выходного устройства, так m_hDC
и в m_hAttribDC
контексте атрибута.
CDC::BeginPath
Открывает скобку пути в контексте устройства.
BOOL BeginPath();
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
После открытия скобки пути приложение может начать вызывать функции рисования GDI, чтобы определить точки, лежащие в пути. Приложение может закрыть скобку открытого EndPath
пути, вызвав функцию-член. При вызове BeginPath
приложения все предыдущие пути удаляются.
См BeginPath
. в пакете SDK для Windows список функций рисования, определяющих точки в пути.
Пример
// 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);
Параметры
x
Задает логическую координату x левого верхнего угла прямоугольника назначения.
y
Задает логическую координату y верхнего левого угла прямоугольника назначения.
nWidth
Задает ширину (в логических единицах) целевого прямоугольника и исходного растрового изображения.
nHeight
Задает высоту (в логических единицах) целевого прямоугольника и исходного растрового изображения.
pSrcDC
Указатель на объект, определяющий CDC
контекст устройства, из которого будет скопирована растровая карта. Он должен быть NULL
, если dwRop
указывает операцию растра, которая не включает источник.
xSrc
Задает логическую координату x левого верхнего угла исходного растрового изображения.
ySrc
Указывает логическую координату Y верхнего левого угла исходного растрового изображения.
dwRop
Определяет подлежащую выполнению растровую операцию. Коды операций растра определяют, как GDI объединяет цвета в выходных операциях, включающих текущую кисть, возможное исходное растровое изображение и целевое растровое изображение. Ознакомьтесь BitBlt
со списком кодов dwRop
операций растровых операций и их описаниями в пакете SDK для Windows
Полный список кодов растровых операций см. в разделе "Сведения о кодах операций растеров" в пакете SDK для Windows.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Приложение может выровнять окна или клиентские области по границам байтов, чтобы убедиться, что 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.
Пример
Пример см. в примере 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);
Параметры
x1
Задает координату x левого верхнего угла ограничивающего прямоугольника аккорда (в логических единицах).
y1
Задает координату y левого верхнего угла ограничивающего прямоугольника аккорда (в логических единицах).
x2
Задает координату x правого нижнего угла ограничивающего прямоугольника аккорда (в логических единицах).
y2
Задает координату y правого нижнего угла ограничивающего прямоугольника аккорда (в логических единицах).
x3
Указывает координату x точки, которая определяет начальную точку аккорда (в логических единицах).
y3
Указывает координату y точки, которая определяет начальную точку аккорда (в логических единицах).
x4
Указывает координату x точки, которая определяет конечную точку аккорда (в логических единицах).
y4
Указывает координату y точки, которая определяет конечную точку аккорда (в логических единицах).
lpRect
Указывает ограничивающий прямоугольник (в логических единицах). Для этого параметра можно передать LPRECT
объект или CRect
объект.
ptStart
Задает координаты x-и y точки, которая определяет начальную точку аккорда (в логических единицах). Этот момент не должен лежать точно на аккорде. Для этого параметра можно передать структуру POINT
CPoint
или объект.
*ptEnd*
Задает координаты x-и y точки, определяющей конечную точку аккорда (в логических единицах). Этот момент не должен лежать точно на аккорде. Для этого параметра можно передать структуру POINT
CPoint
или объект.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Параметры ( x1
, y1
) x2
y2
указывают верхние и нижние правые угла соответственно прямоугольника, ограничивающего многоточие, которое является частью аккорда. Параметры ( x3
, y3
) x4
y4
указывают конечные точки линии, пересекающей многоточие. Аккорд рисуется с помощью выбранного пера и заполняется с помощью выбранной кисти.
Рисунок, рисуемый Chord
функцией, расширяется до, но не включает правые и нижние координаты. Это означает, что высота фигуры и y2
- y1
ширина фигуры .x2
- x1
Пример
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();
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Функция закрывает рисунок, рисуя линию из текущей позиции до первой точки фигуры (обычно точек, указанной последним вызовом MoveTo
функции-члена) и подключает строки с помощью стиля соединения линий. Если фигура закрыта с помощью LineTo
функции-члена, вместо нее CloseFigure
используются конечные крышки, чтобы создать угол вместо соединения. CloseFigure
следует вызывать только в том случае, если в контексте устройства есть открытая скобка пути.
Рисунок в пути открыт, если он явно не закрыт с помощью этой функции. (Рисунок может быть открыт, даже если текущая точка и начальная точка фигуры совпадают.) Любая линия или кривая, добавленная к пути после CloseFigure
запуска новой фигуры.
CDC::CreateCompatibleDC
Создает контекст устройства памяти, совместимый с устройством, указанным в параметре pDC
.
BOOL CreateCompatibleDC(CDC* pDC);
Параметры
pDC
Указатель на контекст устройства. Если pDC
это NULL
так, функция создает контекст устройства памяти, совместимый с системным дисплеем.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Контекст устройства памяти — это блок памяти, представляющий область отображения. Его можно использовать для подготовки изображений в памяти перед копированием на фактическую поверхность устройства совместимого устройства.
При создании контекста устройства памяти GDI автоматически выбирает для него 1-по 1 монохромное растровое изображение. Выходные функции GDI можно использовать с контекстом устройства памяти, только если в этом контексте был создан и выбран растровый рисунок.
Эту функцию можно использовать только для создания совместимых контекстов устройств для устройств, поддерживающих операции растра. Сведения о передаче битовых блоков между контекстами устройства см. в CDC::BitBlt
функции-члене. Чтобы определить, поддерживает ли контекст устройства операции растра, см RC_BITBLT
. возможность растра в функции-члене CDC::GetDeviceCaps
.
Пример
// 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);
Параметры
lpszDriverName
Указывает на строку, завершающую значение NULL, которая указывает имя файла (без расширения) драйвера устройства (например, "EPSON
"). Вы также можете передать CString
объект для этого параметра.
lpszDeviceName
Указывает на строку, завершающую значение NULL, указывающую имя поддерживаемого устройства (например, "EPSON FX-80
"). Параметр используется, lpszDeviceName
если модуль поддерживает несколько устройств. Вы также можете передать CString
объект для этого параметра.
lpszOutput
Указывает на строку, завершающую значение NULL, которая указывает имя файла или устройства для физического носителя выходных данных (порт файла или вывода). Вы также можете передать CString
объект для этого параметра.
lpInitData
Указывает на структуру DEVMODE
, содержащую данные инициализации для конкретного устройства для драйвера устройства. Функция Windows DocumentProperties
извлекает эту структуру, заполненную для данного устройства. Параметр lpInitData
должен бытьNULL
, если драйвер устройства должен использовать инициализацию по умолчанию (если есть), указанную пользователем через панель управления.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Файл заголовка является обязательным, PRINT.H
если DEVMODE
используется структура.
Имена устройств следуют этим соглашениям: конечная двоеточие (:) рекомендуется, но необязательно. Windows удаляет завершающую двоеточие, чтобы имя устройства, заканчивающееся двоеточием, сопоставлялось с тем же портом, что и имя без двоеточия. Имена драйверов и портов не должны содержать начальные или конечные пробелы. Выходные функции GDI нельзя использовать с контекстами информации.
CDC::CreateIC
Создает контекст сведений для указанного устройства.
BOOL CreateIC(
LPCTSTR lpszDriverName,
LPCTSTR lpszDeviceName,
LPCTSTR lpszOutput,
const void* lpInitData);
Параметры
lpszDriverName
Указывает на строку, завершающую значение NULL, которая указывает имя файла (без расширения) драйвера устройства (например, "EPSON
"). Объект для этого параметра можно передать CString
.
lpszDeviceName
Указывает на строку, завершающую значение NULL, указывающую имя поддерживаемого устройства (например, "EPSON FX-80
"). Параметр используется, lpszDeviceName
если модуль поддерживает несколько устройств. Объект для этого параметра можно передать CString
.
lpszOutput
Указывает на строку, завершающую значение NULL, которая указывает имя файла или устройства для физического носителя выходных данных (файла или порта). Объект для этого параметра можно передать CString
.
lpInitData
Указывает на данные инициализации конкретного устройства для драйвера устройства. Параметр lpInitData
должен бытьNULL
, если драйвер устройства должен использовать инициализацию по умолчанию (если есть), указанную пользователем через панель управления. См CreateDC
. формат данных для инициализации для конкретного устройства.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Контекст информации обеспечивает быстрый способ получения сведений об устройстве без создания контекста устройства.
Имена устройств следуют этим соглашениям: конечная двоеточие (:) рекомендуется, но необязательно. Windows удаляет завершающую двоеточие, чтобы имя устройства, заканчивающееся двоеточием, сопоставлялось с тем же портом, что и имя без двоеточия. Имена драйверов и портов не должны содержать начальные или конечные пробелы. Выходные функции GDI нельзя использовать с контекстами информации.
CDC::DeleteDC
Как правило, не вызывайте эту функцию; деструктор сделает это для вас.
BOOL DeleteDC();
Возвращаемое значение
Ненулевое значение, если функция успешно завершена; в противном случае — 0.
Замечания
Функция-член DeleteDC
удаляет контексты устройств Windows, связанные с m_hDC
текущим CDC
объектом. Если этот CDC
объект является последним активным контекстом устройства для данного устройства, все ресурсы хранилища и системы, используемые устройством, освобождаются.
Приложение не должно вызываться DeleteDC
, если объекты были выбраны в контексте устройства. Объекты сначала должны быть выбраны из контекста устройства перед его удалением.
Приложение не должно удалять контекст устройства, дескриптор которого получен путем вызова CWnd::GetDC
. Вместо этого он должен вызываться CWnd::ReleaseDC
для освобождения контекста устройства. Предоставляются CClientDC
классы для CWindowDC
упаковки этих функций.
Функция DeleteDC
обычно используется для удаления контекстов устройства, созданных с помощью CreateDC
, CreateIC
или CreateCompatibleDC
.
Пример
Пример см. в примере CPrintDialog::GetPrinterDC
.
CDC::DeleteTempMap
Вызывается автоматически обработчиком CWinApp
времени простоя, удаляет временные CDC
объекты, DeleteTempMap
созданные FromHandle
с помощью, но не уничтожает дескриптор контекста устройства (hDC
s) временно связанных с объектамиCDC
.
static void PASCAL DeleteTempMap();
CDC::Detach
Вызовите эту функцию, чтобы отсоединить m_hDC
(контекст выходного устройства) от CDC
объекта и задать оба m_hDC
значения m_hAttribDC
NULL
.
HDC Detach();
Возвращаемое значение
Контекст устройства Windows.
CDC::DPtoHIMETRIC
Эта функция используется при добавлении HIMETRIC
размеров в OLE, преобразовывая пиксели HIMETRIC
в .
void DPtoHIMETRIC(LPSIZE lpSize) const;
Параметры
lpSize
Указывает на структуру или CSize
объект SIZE.
Замечания
Если режим сопоставления объекта контекста устройства имеет MM_LOENGLISH
значение , MM_HIENGLISH
MM_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;
Параметры
lpPoints
Указывает на массив POINT
структур или CPoint
объектов.
nCount
Количество точек в массиве.
lpRect
Указывает на структуру RECT
или CRect
объект. Этот параметр используется для простого случая преобразования одного прямоугольника из точек устройства в логические точки.
lpSize
Указывает на структуру SIZE
или CSize
объект.
Замечания
Функция сопоставляет координаты каждой точки или измерения размера из системы координат устройства в логическую систему координат 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);
Параметры
lpRect
Указывает ограничивающий прямоугольник (в логических единицах). Можно передать указатель на RECT
структуру или CRect
объект для этого параметра.
clrTopLeft
Задает цвет верхней и левой сторон трехмерного прямоугольника.
clrBottomRight
Задает цвет нижней и правой сторон трехмерного прямоугольника.
x
Задает логическую координату x левого верхнего угла трехмерного прямоугольника.
y
Задает логическую координату y левого верхнего угла трехмерного прямоугольника.
cx
Задает ширину трехмерного прямоугольника.
cy
Задает высоту трехмерного прямоугольника.
Замечания
Прямоугольник будет нарисован с верхними и левыми сторонами в цвете, указанном clrTopLeft
в нижней и правой сторонах в цвете, заданном .clrBottomRight
Пример
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);
Параметры
lpRect
Указывает на RECT
структуру или CRect
объект, указывающий логические координаты прямоугольника— в данном случае конец отрисовки прямоугольника.
size
Задает смещение от верхнего левого угла внешней границы к левому верхнему углу внутренней границы (т. е. толщины границы) прямоугольника.
lpRectLast
Указывает на RECT
структуру или CRect
объект, указывающий логические координаты позиции прямоугольника — в данном случае исходная позиция прямоугольника.
sizeLast
Указывает перемещение из левого верхнего угла внешней границы в левый верхний угол внутренней границы (т. е. толщину границы) исходного прямоугольника, перезаписываемого.
pBrush
Указатель на объект кисти. Установите для NULL
использования кисти по умолчанию полутон.
pBrushLast
Указатель на последний используемый объект кисти. Установите для NULL
использования кисти по умолчанию полутон.
Замечания
Вызовите его в цикле в качестве образца позиции мыши, чтобы дать визуальный отзыв. При вызове DrawDragRect
предыдущий прямоугольник удаляется и создается новый прямоугольник. Например, когда пользователь перетаскивает прямоугольник по экрану, DrawDragRect
стирает исходный прямоугольник и перерисовывает новый прямоугольник в новой позиции. По умолчанию рисует DrawDragRect
прямоугольник с помощью полутонной кисти, чтобы исключить мерцание и создать внешний вид плавно перемещаемого прямоугольника.
При первом вызове DrawDragRect
lpRectLast
параметр должен бытьNULL
.
CDC::DrawEdge
Вызовите эту функцию-член, чтобы нарисовать края прямоугольника указанного типа и стиля.
BOOL DrawEdge(
LPRECT lpRect,
UINT nEdge,
UINT nFlags);
Параметры
lpRect
Указатель на RECT
структуру, содержащую логические координаты прямоугольника.
nEdge
Указывает тип внутреннего и внешнего края для рисования. Этот параметр должен быть сочетанием одного флага внутренней границы и одного внешнего флага границы. Ознакомьтесь DrawEdge
с пакетом SDK для Windows для таблицы типов параметров.
nFlags
Флаги, указывающие тип границы, нарисуемой. Ознакомьтесь DrawEdge
с пакетом SDK для Windows для таблицы значений параметра. Для диагональных линий BF_RECT
флаги указывают конечную точку вектора, ограничивающегося параметром прямоугольника.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
CDC::DrawEscape
Обращается к возможностям рисования видеотрансляции, которые не доступны напрямую через интерфейс графического устройства (GDI).
int DrawEscape(
int nEscape,
int nInputSize,
LPCSTR lpszInputData);
Параметры
nEscape
Указывает выполняемую функцию escape-файла.
nInputSize
Указывает количество байтов данных, на которые указывает lpszInputData
параметр.
lpszInputData
Указывает на входную структуру, необходимую для указанного escape-обхода.
Возвращаемое значение
Указывает результат функции. Больше нуля при успешном выполнении, за исключением QUERYESCSUPPORT
escape-обхода рисования, который проверяет только реализацию; или ноль, если экран не реализован; или меньше нуля, если произошла ошибка.
Замечания
При вызове DrawEscape
приложения данные, идентифицированные nInputSize
и lpszInputData
передаются непосредственно указанному драйверу отображения.
CDC::DrawFocusRect
Рисует прямоугольник в стиле, используемом для указания того, что прямоугольник имеет фокус.
void DrawFocusRect(LPCRECT lpRect);
Параметры
lpRect
Указывает на RECT
структуру или CRect
объект, указывающий логические координаты прямоугольника, нарисованного.
Замечания
Так как это логическая функция XOR (^
), вызывая эту функцию во второй раз с тем же прямоугольником, удаляет прямоугольник из дисплея. Прямоугольник, рисуемый этой функцией, не может быть прокручен. Чтобы прокрутить область, содержащую прямоугольник, нарисованный этой функцией, сначала вызовите DrawFocusRect
удаление прямоугольника из дисплея, а затем прокрутите область, а затем снова вызовите DrawFocusRect
, чтобы нарисовать прямоугольник в новой позиции.
Внимание
DrawFocusRect
работает только в MM_TEXT
режиме. В других режимах эта функция неправильно рисует прямоугольник фокуса, но не возвращает значения ошибок.
CDC::DrawFrameControl
Вызовите эту функцию-член, чтобы нарисовать элемент управления кадром указанного типа и стиля.
BOOL DrawFrameControl(
LPRECT lpRect,
UINT nType,
UINT nState);
Параметры
lpRect
Указатель на RECT
структуру, содержащую логические координаты прямоугольника.
nType
Указывает тип элемента управления кадром для рисования. См. uType
параметр в DrawFrameControl
пакете SDK для Windows для списка возможных значений этого параметра.
nState
Указывает начальное состояние элемента управления кадром. Может быть одним или несколькими значениями, описанными для uState
параметра в DrawFrameControl
пакете SDK для Windows. nState
Используйте значение DFCS_ADJUSTRECT
для настройки ограничивающего прямоугольника, чтобы исключить окружающий край кнопки.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
В нескольких случаях nState
зависит от nType
параметра. В следующем списке показана связь между четырьмя nType
значениями и nState
:
DFC_BUTTON
DFCS_BUTTON3STATE
Кнопка "Три состояния"DFCS_BUTTONCHECK
ФлажокDFCS_BUTTONPUSH
КнопкаDFCS_BUTTONRADIO
ПереключательDFCS_BUTTONRADIOIMAGE
Изображение для переключателя (несовершение требуется изображение)DFCS_BUTTONRADIOMASK
Маска для переключателя (некватр нуждается в маске)
DFC_CAPTION
DFCS_CAPTIONCLOSE
Кнопка "Закрыть"DFCS_CAPTIONHELP
Кнопка справкиDFCS_CAPTIONMAX
Кнопка "Развернуть"DFCS_CAPTIONMIN
Кнопка "Свернуть"DFCS_CAPTIONRESTORE
Кнопка "Восстановить"
DFC_MENU
DFCS_MENUARROW
Стрелка подменюDFCS_MENUBULLET
ПуляDFCS_MENUCHECK
Флажок
DFC_SCROLL
DFCS_SCROLLCOMBOBOX
Полоса прокрутки поля со спискомDFCS_SCROLLDOWN
Стрелка вниз полосы прокруткиDFCS_SCROLLLEFT
Стрелка влево полосы прокруткиDFCS_SCROLLRIGHT
Стрелка вправо полосы прокруткиDFCS_SCROLLSIZEGRIP
Сцепление размера в правом нижнем углу окнаDFCS_SCROLLUP
Стрелка вверх по полосе прокрутки
Пример
Этот код рисует захват размера в правом нижнем углу окна. Он подходит для 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);
Параметры
x
Задает логическую координату x левого верхнего угла значка.
y
Задает логическую координату y левого верхнего угла значка.
hIcon
Определяет дескриптор нарисованного значка.
point
Задает логические координаты x-и y верхнего левого угла значка. Вы можете передать структуру POINT
CPoint
или объект для этого параметра.
Возвращаемое значение
Ненулевое значение, если функция успешно завершена; в противном случае — 0.
Замечания
Функция помещает верхний левый угол значка в расположении, указанном x
и y
. Расположение зависит от текущего режима сопоставления контекста устройства.
Ресурс значка должен быть загружен ранее с помощью функций CWinApp::LoadIcon
или CWinApp::LoadStandardIcon
CWinApp::LoadOEMIcon
. Перед MM_TEXT
использованием этой функции необходимо выбрать режим сопоставления.
Пример
Пример см. в примере CWnd::IsIconic
.
CDC::DrawState
Вызовите эту функцию-член, чтобы отобразить изображение и применить визуальный эффект, чтобы указать состояние, например отключенное или состояние по умолчанию.
Примечание.
Для всех 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);
Параметры
pt
Указывает расположение изображения.
size
Указывает размер изображения.
hBitmap
Дескриптор растрового изображения.
nFlags
Флаги, указывающие тип изображения и состояние. Сведения о возможных типах и состояниях nFlags смDrawState
. в пакете SDK для Windows.
hBrush
Дескриптор кисти.
pBitmap
Указатель на объект CBitmap
.
pBrush
Указатель на объект CBrush
.
hIcon
Дескриптор для значка.
lpszText
Указатель на текст.
bPrefixText
Текст, который может содержать ускоритель mnemonic. Параметр lData
задает адрес строки, а nTextLen
параметр задает длину. Если nTextLen
значение равно 0, предполагается, что строка будет завершена null.
nTextLen
Длина текстовой строки, на которую указывает lpszText
. Если nTextLen
значение равно 0, предполагается, что строка будет завершена null.
lpDrawProc
Указатель на функцию обратного вызова, используемую для отрисовки изображения. Этот параметр требуется, если тип изображения указан nFlags
DST_COMPLEX
. Это необязательно и может быть NULL
, если тип изображения имеет тип DST_TEXT
. Для всех других типов изображений этот параметр игнорируется. Дополнительные сведения о функции обратного вызова см DrawStateProc
. в пакете SDK для Windows.
lData
Указывает сведения о изображении. Значение этого параметра зависит от типа изображения.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 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);
Параметры
lpszString
Указывает на строку, которая должна быть нарисована. Если nCount
значение равно -1, строка должна быть завершена со значением NULL.
nCount
Указывает количество символов в строке. Если nCount
значение равно -1, предполагается, что длинный указатель на строку, завершаемую null, lpszString
и DrawText
вычисляет число символов автоматически.
lpRect
Указывает на RECT
структуру или CRect
объект, содержащий прямоугольник (в логических координатах), в котором текст должен быть отформатирован.
str
CString
Объект, содержащий указанные символы для рисования.
nFormat
Задает метод форматирования текста. Это может быть любое сочетание значений, описанных для uFormat
параметра в DrawText
пакете SDK для Windows. (объединение с помощью битового оператора OR):
Примечание.
Некоторые uFormat
сочетания флагов могут привести к изменению переданной строки. Использование DT_MODIFYSTRING
с DT_END_ELLIPSIS
любой или DT_PATH_ELLIPSIS
может привести к изменению строки, вызывая утверждение в CString
переопределении. Значения DT_CALCRECT
, , DT_EXTERNALLEADING
DT_INTERNAL
и DT_NOCLIP
DT_NOPREFIX
не могут использоваться со значениемDT_TABSTOP
.
Возвращаемое значение
Высота текста, если функция выполнена успешно.
Замечания
Он форматирует текст, расширяя вкладки в соответствующие пробелы, выравнивая текст слева, справа или в центре заданного прямоугольника, а также разбивая текст на строки, соответствующие заданному прямоугольнику. Тип форматирования указывается в параметре 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);
Параметры
lpszString
Указывает на строку, которая должна быть нарисована. Если nCount
значение равно -1, строка должна быть завершена null.
nCount
Указывает количество символов в строке. Если nCount
значение равно -1, предполагается, что длинный указатель на строку, завершаемую null, lpszString
и DrawText
вычисляет число символов автоматически.
lpRect
Указывает на RECT
структуру или CRect
объект, содержащий прямоугольник (в логических координатах), в котором текст должен быть отформатирован.
str
CString
Объект, содержащий указанные символы для рисования.
nFormat
Задает метод форматирования текста. Это может быть любое сочетание значений, описанных для uFormat
параметра в DrawText
пакете SDK для Windows. (Объединение с помощью битового побитового Оператор OR ):
Примечание.
Некоторые uFormat
сочетания флагов могут привести к изменению переданной строки. Использование DT_MODIFYSTRING
с DT_END_ELLIPSIS
любой или DT_PATH_ELLIPSIS
может привести к изменению строки, вызывая утверждение в CString
переопределении. Значения DT_CALCRECT
, , DT_EXTERNALLEADING
DT_INTERNAL
и DT_NOCLIP
DT_NOPREFIX
не могут использоваться со значениемDT_TABSTOP
.
lpDTParams
Указатель на структуру DRAWTEXTPARAMS
, указывающую дополнительные параметры форматирования. Этот параметр может иметь значение NULL
.
Замечания
Он форматирует текст, расширяя вкладки в соответствующие пробелы, выравнивая текст слева, справа или в центре заданного прямоугольника, а также разбивая текст на строки, соответствующие заданному прямоугольнику. Тип форматирования определяется 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);
Параметры
x1
Задает логическую координату x левого верхнего угла ограничивающего прямоугольника эллипса.
y1
Задает логическую координату y левого верхнего угла ограничивающего прямоугольника эллипса.
x2
Задает логическую координату x правого нижнего угла ограничивающего прямоугольника эллипса.
y2
Задает логическую координату y правого нижнего угла ограничивающего прямоугольника эллипса.
lpRect
Задает ограничивающий прямоугольник многоточия. Вы также можете передать CRect
объект для этого параметра.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Центр многоточия является центром ограничивающего прямоугольника, указанного x1
в , x2
y1
и , или y2
lpRect
. Многоточие рисуется с текущим пером, и его интерьер заполняется текущей кистью.
Рисунок, нарисованный этой функцией, расширяется до, но не включает, правые и нижние координаты. Это означает, что высота фигуры и y2
- y1
ширина фигуры .x2
- x1
Если ширина или высота ограничивающего прямоугольника равна 0, многоточие не рисуется.
CDC::EndDoc
Завершает задание печати, запущенное вызовом StartDoc
функции-члена.
int EndDoc();
Возвращаемое значение
Больше или равно 0, если функция выполнена успешно, или отрицательное значение, если произошла ошибка.
Замечания
Эта функция-член заменяет ENDDOC
escape-файл принтера и должен вызываться сразу после завершения успешного задания печати.
Если приложение сталкивается с ошибкой печати или отмененной операцией печати, она не должна пытаться завершить операцию с помощью либо EndDoc
AbortDoc
. GDI автоматически завершает операцию перед возвратом значения ошибки.
Эта функция не должна использоваться внутри метафайлов.
Пример
Пример см. в примере CDC::StartDoc
.
CDC::EndPage
Сообщает устройству, что приложение завершило запись на страницу.
int EndPage();
Возвращаемое значение
Больше или равно 0, если функция выполнена успешно, или отрицательное значение, если произошла ошибка.
Замечания
Эта функция-член обычно используется для перенаправления драйвера устройства на новую страницу.
Эта функция-член заменяет NEWFRAME
экран-экран принтера. В отличие от NEWFRAME
этого, эта функция всегда вызывается после печати страницы.
Пример
Пример см. в примере CDC::StartDoc
.
CDC::EndPath
Закрывает скобку пути и выбирает путь, определенный скобкой в контексте устройства.
BOOL EndPath();
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Пример
Пример см. в примере CDC::BeginPath
.
CDC::EnumObjects
Перечисляет ручки и кисти, доступные в контексте устройства.
int EnumObjects(
int nObjectType,
int (CALLBACK* lpfn)(
LPVOID,
LPARAM),
LPARAM lpData);
Параметры
nObjectType
Указывает тип объекта. Он может иметь значения OBJ_BRUSH
или OBJ_PEN
.
lpfn
Адрес экземпляра процедуры для функции обратного вызова, предоставленной приложением. См. раздел "Примечания" ниже.
lpData
Указывает на предоставленные приложением данные. Данные передаются функции обратного вызова вместе с информацией об объекте.
Возвращаемое значение
Указывает последнее значение, возвращаемое функцией обратного вызова. Его значение определяется пользователем.
Замечания
Для каждого объекта заданного типа функция обратного вызова, передаваемая вами, вызывается с информацией для этого объекта. Система вызывает функцию обратного вызова, пока не будет больше объектов или функция обратного вызова возвращает значение 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, так как исключения нельзя создавать через границы обратного вызова. Дополнительные сведения об исключениях см. в статье "Исключения".
Пример
// 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);
Параметры
nEscape
Указывает выполняемую функцию escape-файла.
Полный список escape-функций см Escape
. в пакете SDK для Windows.
nCount
Указывает количество байтов данных, на которые указывает lpszInData
.
lpszInData
Указывает на структуру входных данных, необходимую для этого escape-обхода.
lpOutData
Указывает на структуру, которая получает выходные данные из этого escape-файла. Если lpOutData
данные не возвращаются, параметр NULL
не возвращается.
nInputSize
Указывает количество байтов данных, на которые указывает lpszInputData
параметр.
lpszInputData
Указывает на входную структуру, необходимую для указанного escape-обхода.
nOutputSize
Указывает количество байтов данных, на которые указывает lpszOutputData
параметр.
lpszOutputData
Указывает на структуру, которая получает выходные данные из этого escape-файла. Этот параметр должен быть NULL
, если данные не возвращаются.
Возвращаемое значение
Положительное значение возвращается, если функция выполнена успешно, за исключением QUERYESCSUPPORT
escape-файла, который проверяет только реализацию. Ноль возвращается, если escape-файл не реализован. Отрицательное значение возвращается, если произошла ошибка. Ниже приведены распространенные значения ошибок:
SP_ERROR
Общая ошибка.SP_OUTOFDISK
Недостаточно места на диске в настоящее время доступно для spooling, и больше места не станет доступным.SP_OUTOFMEMORY
Недостаточно памяти доступно для spooling.SP_USERABORT
Пользователь завершил задание с помощью диспетчера печати.
Замечания
Из исходных экранов принтера поддерживается только 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);
Параметры
x1
Задает логическую координату x левого верхнего угла прямоугольника.
y1
Задает логическую координату Y верхнего левого угла прямоугольника.
x2
Задает логическую координату x правого нижнего угла прямоугольника.
y2
Задает логическую координату y правого нижнего угла прямоугольника.
lpRect
Задает прямоугольник. Может также быть CRect
объектом.
Возвращаемое значение
Указывает тип нового региона вырезки. В качестве такой точки может выступать любой из следующих вариантов:
COMPLEXREGION
Регион имеет перекрывающиеся границы.ERROR
Не было создано ни одного региона.NULLREGION
Регион пуст.SIMPLEREGION
Регион не имеет перекрывающихся границ.
Замечания
Ширина прямоугольника, указанная абсолютным значением x2
- x1
, не должна превышать 32 767 единиц. Это ограничение также применяется к высоте прямоугольника.
CDC::ExcludeUpdateRgn
Запрещает рисование в недопустимых областях окна, исключая обновленный регион в окне из области вырезки, связанной CDC
с объектом.
int ExcludeUpdateRgn(CWnd* pWnd);
Параметры
pWnd
Указывает на объект окна, окно которого обновляется.
Возвращаемое значение
Тип исключенного региона. Это может быть любое из следующих значений:
COMPLEXREGION
Регион имеет перекрывающиеся границы.ERROR
Не было создано ни одного региона.NULLREGION
Регион пуст.SIMPLEREGION
Регион не имеет перекрывающихся границ.
CDC::ExtFloodFill
Заполняет область поверхности отображения текущей кистью.
BOOL ExtFloodFill(
int x,
int y,
COLORREF crColor,
UINT nFillType);
Параметры
x
Задает логическую координату x точки, в которой начинается заполнение.
y
Указывает логическую координату y точки, в которой начинается заполнение.
crColor
Задает цвет границы или области, заполняемой. Интерпретация crColor
зависит от значения nFillType
.
nFillType
Указывает тип выполняемой заливки наводнения. Это должно быть одно из следующих значений:
FLOODFILLBORDER
Область заливки ограничивается цветом, заданным.crColor
Этот стиль идентичен заполнению, выполняемойFloodFill
.FLOODFILLSURFACE
Область заливки определяется цветом, заданным.crColor
Заполнение продолжается во всех направлениях до тех пор, пока встречается цвет. Этот стиль полезен для заполнения областей с многоцветными границами.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; В противном случае значение 0, если заполнение не удалось завершить, если заданная точка имеет цвет границы, заданный crColor
(если FLOODFILLBORDER
запрашивался), если заданная точка не имеет цвета, указанного crColor
(если FLOODFILLSURFACE
запросили), или если точка находится за пределами области вырезки.
Замечания
Эта функция-член обеспечивает большую гибкость, чем FloodFill
из-за того, что можно указать тип nFillType
заполнения.
Если nFillType
задано значение FLOODFILLBORDER
, то предполагается, что область полностью ограничена цветом, указанным в параметре crColor
. Функция начинается с точки, указанной x
y
и заполняет все направления границы цвета.
Если 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);
Параметры
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
случае ExtTextOut
NULL
используется интервал по умолчанию между символами.
str
CString
Объект, содержащий указанные символы для рисования.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Прямоугольная область может быть непрозрачной (заполненной текущим цветом фона), и это может быть область вырезки.
Если nOptions
значение равно 0 и lpRect
имеет значение NULL
, функция записывает текст в контекст устройства без использования прямоугольной области. По умолчанию текущая позиция не используется или обновляется функцией. Если приложению необходимо обновить текущую позицию при вызове ExtTextOut
, приложение может вызвать CDC
функцию-член SetTextAlign
с заданным nFlags
значением TA_UPDATECP
. Если этот флаг задан, Windows игнорирует x
и y
при последующих вызовах ExtTextOut
и использует текущую позицию. Если приложение используется TA_UPDATECP
для обновления текущей позиции, ExtTextOut
задает текущую позицию в конце предыдущей строки текста или положение, указанное последним элементом массива, на который указывает lpDxWidths
значение , на которое больше.
CDC::FillPath
Закрывает все открытые фигуры в текущем пути и заполняет интерьер пути с помощью текущего режима заполнения кисти и многоугольника.
BOOL FillPath();
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
После заполнения внутренних элементов путь удаляется из контекста устройства.
CDC::FillRect
Вызовите эту функцию-член, чтобы заполнить заданный прямоугольник с помощью указанной кисти.
void FillRect(
LPCRECT lpRect,
CBrush* pBrush);
Параметры
lpRect
Указывает на RECT
структуру, содержащую логические координаты прямоугольника, который должен быть заполнен. Вы также можете передать CRect
объект для этого параметра.
pBrush
Определяет кисть, используемую для заполнения прямоугольника.
Замечания
Функция заполняет полный прямоугольник, включая левые и верхние границы, но не заполняет правые и нижние границы.
Кисть должна быть создана с помощью CBrush
функций-членов CreateHatchBrush
, CreatePatternBrush
а CreateSolidBrush
также или извлекается функцией GetStockObject
Windows.
При заполнении указанного прямоугольника не включает правые и нижние стороны прямоугольника FillRect
. GDI заполняет прямоугольник до, но не включает в себя правый столбец и нижнюю строку независимо от текущего режима сопоставления. FillRect
сравнивает значения top
, bottom
left
и right
члены указанного прямоугольника. Если bottom
значение меньше или top
равно, или right
если меньше или равно left
, прямоугольник не рисуется.
FillRect
похоже CDC::FillSolidRect
на ; однако принимает кисть и, следовательно, FillRect
можно использовать для заполнения прямоугольника сплошным цветом, дитерированных кистей или шаблона. FillSolidRect
использует только сплошные цвета (указанные параметром COLORREF
). FillRect
обычно медленнее FillSolidRect
.
CDC::FillRgn
Заполняет область, указанную pRgn
кистью, указанной в параметре pBrush
.
BOOL FillRgn(
CRgn* pRgn,
CBrush* pBrush);
Параметры
pRgn
Указатель на регион, который нужно заполнить. Координаты для заданного региона указываются в логических единицах.
pBrush
Определяет кисть, используемую для заполнения региона.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Кисть должна быть создана с помощью CBrush
функций-членовCreateHatchBrush
, CreateSolidBrush
CreatePatternBrush
или извлекатьсяGetStockObject
.
Пример
Пример см. в примере CRgn::CreateRoundRectRgn
.
CDC::FillSolidRect
Вызовите эту функцию-член, чтобы заполнить заданный прямоугольник указанным сплошным цветом.
void FillSolidRect(
LPCRECT lpRect,
COLORREF clr);
void FillSolidRect(
int x,
int y,
int cx,
int cy,
COLORREF clr);
Параметры
lpRect
Указывает ограничивающий прямоугольник (в логических единицах). Можно передать указатель на RECT
структуру данных или CRect
объект для этого параметра.
clr
Указывает цвет, используемый для заполнения прямоугольника.
x
Задает логическую координату x левого верхнего угла прямоугольника.
y
Задает логическую координату y верхнего левого угла прямоугольника назначения.
cx
Задает ширину прямоугольника.
cy
Задает высоту прямоугольника.
Замечания
FillSolidRect
очень похож на ; однако использует только сплошные цвета (указанные COLORREF
параметром), в то время FillRect
как CDC::FillRect
принимает кисть и, следовательно, FillSolidRect
можно использовать для заполнения прямоугольника сплошным цветом, дитерированного цвета, хэтчированных кистей или шаблона. FillSolidRect
обычно быстрее, чем FillRect
.
Примечание.
При вызове FillSolidRect
цвет фона, который был установлен ранее с помощью SetBkColor
, задается для цвета, указанного clr
.
CDC::FlattenPath
Преобразует все кривые в пути, выбранном в текущем контексте устройства, и преобразует каждую кривую в последовательность строк.
BOOL FlattenPath();
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
CDC::FloodFill
Заполняет область поверхности отображения текущей кистью.
BOOL FloodFill(
int x,
int y,
COLORREF crColor);
Параметры
x
Задает логическую координату x точки, в которой начинается заполнение.
y
Указывает логическую координату y точки, в которой начинается заполнение.
crColor
Задает цвет границы.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае возвращается значение 0, если заполнение не удалось завершить, данный пункт имеет цвет границы, указанный crColor
параметром, или точка находится за пределами области вырезки.
Замечания
Предполагается, что область ограничена, как указано в параметре crColor
. Функция FloodFill
начинается в точке, указанной x
и y
продолжается во всех направлениях к цветовой границе.
Поддерживают функцию-член только контексты и устройства с памятью и устройства, поддерживающие технологию растрового FloodFill
отображения. Сведения о возможности см. в RC_BITBLT
функции-члене GetDeviceCaps
.
Функция ExtFloodFill
обеспечивает аналогичную возможность, но большую гибкость.
CDC::FrameRect
Рисует границу вокруг прямоугольника, указанного lpRect
в .
void FrameRect(
LPCRECT lpRect,
CBrush* pBrush);
Параметры
lpRect
Указывает на RECT
структуру или CRect
объект, содержащий логические координаты левого и нижнего углов прямоугольника. Вы также можете передать CRect
объект для этого параметра.
pBrush
Определяет кисть, используемую для обрамления прямоугольника.
Замечания
Функция использует заданную кисть для рисования границы. Ширина и высота границы всегда составляет 1 логическая единица.
Если координата прямоугольника bottom
меньше или равна top
, или right
если меньше или равно left
, прямоугольник не рисуется.
Граница, рисуемая FrameRect
по краю, находится в той же позиции, что и граница, рисуемая Rectangle
функцией-членом, используя те же координаты (если Rectangle
используется перо, равное 1 логическому блоку). Интерьер прямоугольника не заполняется FrameRect
.
CDC::FrameRgn
Рисует границу вокруг области, указанной с помощью кисти, указанной pRgn
в параметре pBrush
.
BOOL FrameRgn(
CRgn* pRgn,
CBrush* pBrush,
int nWidth,
int nHeight);
Параметры
pRgn
Указывает на объект, определяющий CRgn
регион, который должен быть заключен в границу. Координаты для заданного региона указываются в логических единицах.
pBrush
Указывает на объект, определяющий CBrush
кисть, используемую для рисования границы.
nWidth
Задает ширину границы в вертикальных штрихах кисти в единицах устройства.
nHeight
Задает высоту границы в горизонтальных штрихах кисти в единицах устройства.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Пример
Пример см. в примере CRgn::CombineRgn
.
CDC::FromHandle
Возвращает указатель на CDC
объект при указании дескриптора контекста устройства.
static CDC* PASCAL FromHandle(HDC hDC);
Параметры
hDC
Содержит дескриптор контекста устройства Windows.
Возвращаемое значение
Указатель может быть временным и не должен храниться за пределами немедленного использования.
Замечания
CDC
Если объект не присоединен к дескриптору, создается и присоединяется временный CDC
объект.
Пример
Пример см. в примере CPrintDialog::GetPrinterDC
.
CDC::GetArcDirection
Возвращает текущее направление дуги для контекста устройства.
int GetArcDirection() const;
Возвращаемое значение
Указывает текущее направление дуги, если выполнено успешно. Ниже приведены допустимые возвращаемые значения:
AD_COUNTERCLOCKWISE
Дуги и прямоугольники, нарисованные счетчиком со стрелкой.AD_CLOCKWISE Arcs
и прямоугольники, нарисованные по часовой стрелке.
Если возникает ошибка, возвращаемое значение равно нулю.
Замечания
Функции Arc и прямоугольника используют направление дуги.
CDC::GetAspectRatioFilter
Извлекает параметр для текущего фильтра пропорций.
CSize GetAspectRatioFilter() const;
Возвращаемое значение
CSize
Объект, представляющий пропорции, используемый текущим фильтром пропорций.
Замечания
Пропорции — это соотношение, сформированное шириной и высотой пикселя устройства. Сведения о пропорции устройства используются в создании, выборе и отображении шрифтов. Windows предоставляет специальный фильтр, фильтр пропорций для выбора шрифтов, предназначенных для определенного пропорции из всех доступных шрифтов. Фильтр использует пропорции, заданные SetMapperFlags
функцией-членом.
CDC::GetBkColor
Возвращает текущий цвет фона.
COLORREF GetBkColor() const;
Возвращаемое значение
Значение цвета RGB.
Замечания
Если фоновый режим имеет значение OPAQUE
, система использует цвет фона для заполнения пробелов в стилях, пробелов между штриховками в кисти и фоном в ячейках символов. Система также использует цвет фона при преобразовании растровых изображений между контекстами цветов и монохромных устройств.
CDC::GetBkMode
Возвращает фоновый режим.
int GetBkMode() const;
Возвращаемое значение
Текущий фоновый режим, который может быть OPAQUE
или TRANSPARENT
.
Замечания
В фоновом режиме определяется, удаляет ли система существующие цвета фона на поверхности рисования перед рисованием текста, штриховками или любым стилем пера, который не является сплошной линией.
CDC::GetBoundsRect
Возвращает текущий накопленный ограничивающий прямоугольник для указанного контекста устройства.
UINT GetBoundsRect(
LPRECT lpRectBounds,
UINT flags);
Параметры
lpRectBounds
Указывает на буфер, который получит текущий ограничивающий прямоугольник. Прямоугольник возвращается в логических координатах.
flags
Указывает, следует ли очистить ограничивающий прямоугольник после возврата. Этот параметр должен быть равен нулю или иметь следующее значение:
DCB_RESET
Принудительно очищает ограничивающий прямоугольник после возвращения.
Возвращаемое значение
Указывает текущее состояние ограничивающего прямоугольника, если функция выполнена успешно. Это может быть сочетание следующих значений:
DCB_ACCUMULATE
Происходит ограничивающее накопление прямоугольника.DCB_RESET
Ограничивающий прямоугольник пуст.DCB_SET
Ограничивающий прямоугольник не пуст.DCB_ENABLE
Ограничивающее накопление включено.DCB_DISABLE
Ограничивающее накопление отключено.
CDC::GetBrushOrg
Извлекает источник (в единицах устройства) кисти, выбранной в настоящее время для контекста устройства.
CPoint GetBrushOrg() const;
Возвращаемое значение
Текущий источник кисти (в единицах устройства) в качестве CPoint
объекта.
Замечания
Исходный источник кисти составляет (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;
Параметры
lpString
Указатель на строку символа для обработки.
nCount
Указывает длину строки. Для версии ANSI это BYTE
число и для функции Юникода это WORD
число. Дополнительные сведения см. в разделе GetCharacterPlacement
.
nMaxExtent
Указывает максимальную степень (в логических единицах), в которой обрабатывается строка. Символы, которые при обработке превышают эту степень, игнорируются. Вычисления для любых обязательных массивов упорядочивания или глифа применяются только к включенным символам. Этот параметр используется только в том случае, если GCP_MAXEXTENT
значение указано в параметре dwFlags
. Поскольку функция обрабатывает входную строку, каждый символ и его экстент добавляются в выходные данные, экстенты и другие массивы только в том случае, если общая степень еще не превысила максимальное значение. После достижения предела обработка остановится.
lpResults
Указатель на GCP_Results
структуру, которая получает результаты функции.
dwFlags
Указывает, как обработать строку в необходимые массивы. Этот параметр может быть одним или несколькими значениями, перечисленными в dwFlags
разделе раздела GetCharacterPlacement
раздела.
str
Указатель на CString
объект для обработки.
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение равно ширине и высоте строки в логических единицах.
Если функция выполняется неудачно, возвращается нулевое значение.
Замечания
Эта функция-член эмулирует функциональные возможности функции функции GetCharacterPlacement
, как описано в пакете SDK для Windows.
CDC::GetCharABCWidths
Извлекает ширину последовательных символов в указанном диапазоне из текущего шрифта TrueType.
BOOL GetCharABCWidths(
UINT nFirstChar,
UINT nLastChar,
LPABC lpabc) const;
BOOL GetCharABCWidths(
UINT nFirstChar,
UINT nLastChar,
LPABCFLOAT lpABCF) const;
Параметры
nFirstChar
Задает первый символ в диапазоне символов из текущего шрифта, для которого возвращаются ширины символов.
nLastChar
Задает последний символ в диапазоне символов из текущего шрифта, для которого возвращаются ширины символов.
lpabc
Указывает на массив структур, получающих ширину символов ABC
при возврате функции. Этот массив должен содержать по крайней мере столько ABC
структур, сколько символов в диапазоне, заданном nFirstChar
и nLastChar
параметрами.
lpABCF
Указывает на буфер, предоставленный приложением, массив структур для получения ширины символов ABCFLOAT
при возврате функции. Ширины, возвращаемые этой функцией, находятся в формате с плавающей запятой IEEE.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Ширина возвращается в логических единицах. Эта функция успешно выполняется только с шрифтами 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;
Параметры
giFirst
Задает первый глифовый индекс в группе последовательных индексов глифов из текущего шрифта. Этот параметр используется только в том случае, если pgi
параметр имеет значение NULL
.
cgi
Указывает количество глифовых индексов.
pgi
Указатель на массив, содержащий индексы глифов. Если значение равно NULL
, giFirst
вместо этого используется параметр. Параметр cgi
задает количество индексов глифов в этом массиве.
lpabc
Указатель на массив структур, получающих ABC
ширину символов. Этот массив должен содержать по крайней мере столько ABC
структур, сколько имеются индексы глифов, указанные параметром cgi
.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Эта функция-член эмулирует функциональные возможности функции функции 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;
Параметры
nFirstChar
Задает первый символ в последовательной группе символов в текущем шрифте.
nLastChar
Задает последний символ в последовательной группе символов в текущем шрифте.
lpBuffer
Указывает на буфер, который получит значения ширины для последовательной группы символов в текущем шрифте.
lpFloatBuffer
Указывает на буфер для получения ширины символов. Возвращаемые ширины находятся в 32-разрядном формате с плавающей запятой IEEE. (Ширина измеряется вдоль базовой линии символов.)
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Например, если nFirstChar
идентифицирует букву "a" и nLastChar
идентифицирует букву "z", функция извлекает ширину всех строчных символов.
Функция сохраняет значения в буфере, на который указывает lpBuffer
. Этот буфер должен быть достаточно большим, чтобы сохранить все ширины. То есть в приведенном примере должно быть не менее 26 записей.
Если символ в последовательной группе символов не существует в определенном шрифте, оно будет назначено значение ширины символа по умолчанию.
CDC::GetCharWidthI
Извлекает ширину в логических координатах последовательных индексов глифов в указанном диапазоне от текущего шрифта.
BOOL GetCharWidthI(
UINT giFirst,
UINT cgi,
LPWORD pgi,
LPINT lpBuffer) const;
Параметры
giFirst
Задает первый глифовый индекс в группе последовательных индексов глифов из текущего шрифта. Этот параметр используется только в том случае, если pgi
параметр имеет значение NULL
.
cgi
Указывает количество глифовых индексов.
pgi
Указатель на массив, содержащий индексы глифов. Если значение равно NULL
, giFirst
вместо этого используется параметр. Параметр cgi
задает количество индексов глифов в этом массиве.
lpBuffer
Указатель на буфер, получающий ширину.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Эта функция-член эмулирует функциональные возможности функции функции GetCharWidthI
, как описано в пакете SDK для Windows.
CDC::GetClipBox
Извлекает размеры жестко ограничивающего прямоугольника вокруг текущей границы обрезки.
virtual int GetClipBox(LPRECT lpRect) const;
Параметры
lpRect
Указывает на RECT
структуру или CRect
объект, который требуется получить размеры прямоугольника.
Возвращаемое значение
Тип обрезки региона. В качестве такой точки может выступать любой из следующих вариантов:
COMPLEXREGION
Область вырезки имеет перекрывающиеся границы.ERROR
Недопустимый контекст устройства.NULLREGION
Область вырезки пуста.SIMPLEREGION
Область вырезки не имеет перекрывающихся границ.
Замечания
Измерения копируются в буфер, на который указывает lpRect
.
CDC::GetColorAdjustment
Извлекает значения корректировки цвета для контекста устройства.
BOOL GetColorAdjustment(LPCOLORADJUSTMENT lpColorAdjust) const;
Параметры
lpColorAdjust
Указывает на структуру данных для получения значений COLORADJUSTMENT
корректировки цвета.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
CDC::GetCurrentBitmap
Возвращает указатель на текущий выбранный CBitmap
объект.
CBitmap* GetCurrentBitmap() const;
Возвращаемое значение
Указатель на CBitmap
объект, если выполнен успешно; в противном случае NULL
.
Замечания
Эта функция-член может возвращать временные объекты.
CDC::GetCurrentBrush
Возвращает указатель на текущий выбранный CBrush
объект.
CBrush* GetCurrentBrush() const;
Возвращаемое значение
Указатель на CBrush
объект, если выполнен успешно; в противном случае NULL
.
Замечания
Эта функция-член может возвращать временные объекты.
CDC::GetCurrentFont
Возвращает указатель на текущий выбранный CFont
объект.
CFont* GetCurrentFont() const;
Возвращаемое значение
Указатель на CFont
объект, если выполнен успешно; в противном случае NULL
.
Замечания
Эта функция-член может возвращать временные объекты.
CDC::GetCurrentPalette
Возвращает указатель на текущий выбранный CPalette
объект.
CPalette* GetCurrentPalette() const;
Возвращаемое значение
Указатель на CPalette
объект, если выполнен успешно; в противном случае NULL
.
Замечания
Эта функция-член может возвращать временные объекты.
CDC::GetCurrentPen
Возвращает указатель на текущий выбранный CPen
объект.
CPen* GetCurrentPen() const;
Возвращаемое значение
Указатель на CPen
объект, если выполнен успешно; в противном случае NULL
.
Замечания
Эта функция-член может возвращать временные объекты.
CDC::GetCurrentPosition
Извлекает текущую позицию (в логических координатах).
CPoint GetCurrentPosition() const;
Возвращаемое значение
Текущая позиция в качестве CPoint
объекта.
Замечания
Текущая позиция может быть задана MoveTo
с помощью функции-члена.
CDC::GetDCBrushColor
Получает текущий цвет кисти.
COLORREF GetDCBrushColor() const;
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение является COLORREF
значением текущего цвета кисти.
Если функция завершается ошибкой, возвращается CLR_INVALID
значение.
Замечания
Эта функция-член эмулирует функциональные возможности функции функции GetDCBrushColor
, как описано в пакете SDK для Windows.
CDC::GetDCPenColor
Получает текущий цвет пера.
COLORREF GetDCPenColor() const;
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение является COLORREF
значением текущего цвета пера.
Если функция завершается ошибкой, возвращается CLR_INVALID
значение.
Замечания
Эта функция-член использует функцию GetDCPenColor
Win32, как описано в пакете SDK для Windows.
CDC::GetDeviceCaps
Извлекает широкий спектр сведений об устройстве с отображением.
int GetDeviceCaps(int nIndex) const;
Параметры
nIndex
Указывает тип возвращаемой информации. Ознакомьтесь GetDeviceCaps
со списком значений в пакете SDK для Windows.
Возвращаемое значение
Значение запрошенной возможности, если функция выполнена успешно.
Пример
Пример см. в примере CPrintDialog::GetDefaults
.
CDC::GetFontData
Извлекает данные метрик шрифта из масштабируемого файла шрифта.
DWORD GetFontData(
DWORD dwTable,
DWORD dwOffset,
LPVOID lpData,
DWORD cbData) const;
Параметры
dwTable
Указывает имя возвращаемой таблицы метрик. Этот параметр может быть одним из таблиц метрик, описанных в спецификации TrueType Font Files, опубликованной корпорацией Майкрософт. Если этот параметр равен 0, данные извлекаются начиная с начала файла шрифта.
dwOffset
Указывает смещение от начала таблицы, с которой начинается получение сведений. Если этот параметр равен 0, данные извлекаются начиная с начала таблицы, указанной параметром dwTable
. Если это значение больше или равно размеру таблицы, GetFontData
возвращается значение 0.
lpData
Указывает на буфер, который получит сведения о шрифте. Если это значение, NULL
функция возвращает размер буфера, необходимый для данных шрифта, указанных в параметре dwTable
.
cbData
Указывает длину в байтах извлекаемой информации. Если этот параметр равен 0, возвращает размер данных, GetFontData
указанных в параметре dwTable
.
Возвращаемое значение
Указывает количество байтов, возвращаемых в буфере, на которое указывает lpData
, если функция выполнена успешно; в противном случае — значение -1.
Замечания
Извлекаемая информация определяется путем указания смещения в файл шрифта и длины возвращаемой информации.
Иногда приложение может использовать функцию-член для GetFontData
сохранения шрифта TrueType с документом. Для этого приложение определяет, можно ли внедрить шрифт, а затем получить весь файл шрифта, указав значение 0 для dwTable
параметра dwOffset
и cbData
параметров.
Приложения могут определить, можно ли внедрить шрифт, проверив otmfsType
элемент OUTLINETEXTMETRIC
структуры. Если задано значение 1 otmfsType
бита, внедрение не допускается для шрифта. Если бит 1 ясно, шрифт может быть внедрен. Если задан бит 2, внедрение выполняется только для чтения.
Если приложение пытается использовать эту функцию для получения сведений для шрифта, отличного от TrueType, GetFontData
функция-член возвращает -1.
CDC::GetFontLanguageInfo
Возвращает сведения о выбранном шрифте для указанного контекста отображения.
DWORD GetFontLanguageInfo() const;
Возвращаемое значение
Возвращаемое значение определяет характеристики выбранного шрифта. Полный список возможных значений см. в разделе GetFontLanguageInfo
.
Замечания
Эта функция-член эмулирует функциональные возможности функции функции GetFontLanguageInfo
, как описано в пакете SDK для Windows.
CDC::GetGlyphOutline
Извлекает кривую контура или растровое изображение для символа структуры в текущем шрифте.
DWORD GetGlyphOutline(
UINT nChar,
UINT nFormat,
LPGLYPHMETRICS lpgm,
DWORD cbBuffer,
LPVOID lpBuffer,
const MAT2* lpmat2) const;
Параметры
nChar
Указывает символ, для которого возвращаются сведения.
nFormat
Указывает формат, в котором функция будет возвращать сведения. Это может быть одно из следующих значений или 0:
Значение | Значение |
---|---|
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
значение или nFormat
GGO_BITMAP
GGO_NATIVE
значение, функция возвращает требуемый размер буфера.
lpmat2
Указывает на MAT2
структуру, содержащую матрицу преобразования для символа. Этот параметр не может быть NULL
, даже если GGO_NATIVE
значение указано для nFormat
.
Возвращаемое значение
Размер буфера в байтах, необходимый для полученной информации, если cbBuffer
значение равно 0 или lpBuffer
равно NULL
. В противном случае это положительное значение, если функция выполнена успешно или -1, если возникла ошибка.
Замечания
Приложение может повернуть символы, полученные в формате растрового изображения, указав матрицу преобразования 2-к-2 в структуре, на которую указывает lpmat2
.
Контур глифа возвращается в виде ряда контуров. Каждый контур определяется структурой TTPOLYGONHEADER
, за которой следует столько TTPOLYCURVE
структур, сколько требуется для описания. Все точки возвращаются в виде POINTFX
структур и представляют абсолютные позиции, а не относительные перемещения. Отправной точкой, заданной pfxStart
членом структуры, является точка, с которой TTPOLYGONHEADER
начинается контур. Следующие TTPOLYCURVE
структуры могут быть либо записями polyline, либо записями сплайна. Полилайновые записи — это ряд точек; Линии, нарисованные между точками, описывают контур символа. Записи сплайна представляют квадратные кривые, используемые TrueType (т. е. квадратиками b-splines).
CDC::GetGraphicsMode
Извлекает текущий графический режим для указанного контекста устройства.
int GetGraphicsMode() const;
Возвращаемое значение
Возвращает текущий графический режим при успешном выполнении. Список значений, возвращаемых этим методом, см. в разделе GetGraphicsMode
.
Возвращает значение 0 при сбое.
Чтобы получить расширенные сведения об ошибке, вызовите функцию GetLastError
.
Замечания
Этот метод упаковывает функцию GetGraphicsMode
GDI Windows.
CDC::GetHalftoneBrush
Вызовите эту функцию-член, чтобы получить полутонную кисть.
static CBrush* PASCAL GetHalftoneBrush();
Возвращаемое значение
Указатель на объект в случае успешного CBrush
выполнения; в противном случае NULL
.
Замечания
Полутонная кисть показывает пиксели, которые по-другому переднего плана и фоновые цвета для создания дитерированного шаблона. На следующей схеме показан пример дитерированного шаблона, созданного полутонной кистью:
На схеме показано, как цвет фона черного цвета и цвет переднего плана желтого цвета объединяются в шаблон, чередуя черные и желтые пиксели друг с другом, чтобы создать дитерированный росчерк пера.
CDC::GetKerningPairs
Извлекает пары кернинга символов для шрифта, выбранного в текущем контексте устройства.
int GetKerningPairs(
int nPairs,
LPKERNINGPAIR lpkrnpair) const;
Параметры
nPairs
Указывает количество структур, KERNINGPAIR
на которые указывается lpkrnpair
. Функция не будет копировать больше пар кернинга, чем указано.nPairs
lpkrnpair
Указывает на массив структур, получающих пары кернинга KERNINGPAIR
при возврате функции. Этот массив должен содержать по крайней мере столько структур, сколько указано nPairs
. Если этот параметр имеет значение NULL
, функция возвращает общее количество пар кернинга для шрифта.
Возвращаемое значение
Указывает количество полученных пар кернинга или общее количество пар кернинга в шрифте, если функция выполнена успешно. Ноль возвращается, если функция завершается ошибкой или для шрифта отсутствуют пары кернинга.
CDC::GetLayout
Вызовите эту функцию-член, чтобы определить макет текста и графики для контекста устройства, например принтера или метафайла.
DWORD GetLayout() const;
Возвращаемое значение
В случае успешного выполнения флаги макета для текущего контекста устройства. В противном случае — GDI_ERROR
. Для получения расширенных сведений об ошибке вызов GetLastError
. Список флагов макета см. в разделе CDC::SetLayout
.
Замечания
Макет по умолчанию слева направо.
CDC::GetMapMode
Извлекает текущий режим сопоставления.
int GetMapMode() const;
Возвращаемое значение
Режим сопоставления.
Замечания
Описание режимов сопоставления см. в функции-члене SetMapMode
.
Примечание.
Если вы вызываете SetLayout
изменение макета контроллера домена направо налево, SetLayout
автоматически измените режим MM_ISOTROPIC
сопоставления на . Следовательно, любой последующий вызов GetMapMode
возвращается MM_ISOTROPIC
.
CDC::GetMiterLimit
Возвращает ограничение митер для контекста устройства.
float GetMiterLimit() const;
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Ограничение митер используется при рисовании геометрических линий с соединениями митера.
CDC::GetNearestColor
Возвращает сплошной цвет, который лучше всего соответствует указанному логическому цвету.
COLORREF GetNearestColor(COLORREF crColor) const;
Параметры
crColor
Указывает соответствующий цвет.
Возвращаемое значение
Значение цвета RGB (красный, зеленый, синий), определяющее сплошной цвет, ближайший к crColor
значению, которое может представлять устройство.
Замечания
Данное устройство должно иметь возможность представлять этот цвет.
CDC::GetOutlineTextMetrics
Извлекает сведения о метриках для шрифтов TrueType.
UINT GetOutlineTextMetrics(
UINT cbData,
LPOUTLINETEXTMETRIC lpotm) const;
Параметры
lpotm
Указывает на массив OUTLINETEXTMETRIC
структур. Если этот параметр имеет значение NULL
, функция возвращает размер буфера, необходимого для полученных данных метрик.
cbData
Задает размер буфера, в байтах, в котором возвращаются сведения.
lpotm
Указывает на структуру OUTLINETEXTMETRIC
. Если этот параметр имеет значение NULL
, функция возвращает размер буфера, необходимый для полученных сведений о метриках.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Структура OUTLINETEXTMETRIC
содержит большую часть сведений о метриках шрифта, предоставляемых форматом TrueType, включая структуру TEXTMETRIC
. Последние четыре члена OUTLINETEXTMETRIC
структуры — это указатели на строки. Приложения должны выделять пространство для этих строк в дополнение к пространству, необходимому для других элементов. Так как в системе нет ограничений на размер строк, самый простой метод выделения памяти заключается в том, чтобы получить требуемый размер, указав ЗНАЧЕНИЕ NULL lpotm
в первом вызове GetOutlineTextMetrics
функции.
CDC::GetOutputCharWidth
Использует контекст m_hDC
выходного устройства и извлекает ширину отдельных символов в последовательной группе символов из текущего шрифта.
BOOL GetOutputCharWidth(
UINT nFirstChar,
UINT nLastChar,
LPINT lpBuffer) const;
Параметры
nFirstChar
Задает первый символ в последовательной группе символов в текущем шрифте.
nLastChar
Задает последний символ в последовательной группе символов в текущем шрифте.
lpBuffer
Указывает на буфер, который получит значения ширины для последовательной группы символов в текущем шрифте.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Например, если 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;
Параметры
lpszString
Указывает на символьную строку для измерения. Вы также можете передать CString
объект для этого параметра.
nCount
Указывает длину строки , на которую указывает lpszString
.
nTabPositions
Указывает количество позиций табуляции в массиве, на которое указывает lpnTabStopPositions
.
lpnTabStopPositions
Указывает на массив целых чисел, содержащих позиции табуляции в логических единицах. Остановки табуляции должны быть отсортированы по возрастанию порядка; Наименьшее x-значение должно быть первым элементом в массиве. Вкладки "Назад" не допускаются.
str
CString
Объект, содержащий указанные символы для измерения.
Возвращаемое значение
Размеры строки (в логических единицах) в объекте CSize
.
Замечания
Если строка содержит один или несколько символов табуляции, ширина строки зависит от табуляции, указанной в параметре lpnTabStopPositions
. Функция использует выбранный в данный момент шрифт для вычисления измерений строки.
Текущий регион вырезки не смещает ширину и высоту, возвращаемую функцией GetOutputTabbedTextExtent
.
Так как некоторые устройства не помещают символы в обычные массивы ячеек (т. е. они кернируют символы), сумма экстентов символов в строке может не совпадать с степенью строки.
Если nTabPositions
значение равно 0 и lpnTabStopPositions
NULL
имеет значение, вкладки расширяются до восьми средних ширин символов. Если nTabPositions
значение равно 1, точки табуляции будут разделены расстоянием, указанным первым значением в массиве, в котором lpnTabStopPositions
указываются точки. Если lpnTabStopPositions
указывает на несколько значений, точка табуляции устанавливается для каждого значения в массиве до числа, указанного в nTabPositions
параметре.
CDC::GetOutputTextExtent
Вызовите эту функцию-член, чтобы использовать контекст выходного устройства, m_hDC
а также вычислить ширину и высоту строки текста с помощью текущего шрифта.
CSize GetOutputTextExtent(
LPCTSTR lpszString,
int nCount) const;
CSize GetOutputTextExtent(const CString& str) const;
Параметры
lpszString
Указывает на строку символов. Вы также можете передать CString
объект для этого параметра.
nCount
Указывает длину строки , на которую указывает lpszString
.
str
CString
Объект, содержащий указанные символы для измерения.
Возвращаемое значение
Измерения строки (в логических единицах), возвращаемые в CSize
объекте.
Замечания
Текущий регион вырезки не влияет на ширину и высоту, возвращаемую GetOutputTextExtent
.
Так как некоторые устройства не помещают символы в обычные массивы ячеек (т. е. они выполняют кернинг), сумма экстентов символов в строке может не совпадать с степенью строки.
CDC::GetOutputTextMetrics
Извлекает метрики текущего шрифта с помощью m_hDC
контекста выходного устройства.
BOOL GetOutputTextMetrics(LPTEXTMETRIC lpMetrics) const;
Параметры
lpMetrics
Указывает на структуру TEXTMETRIC
, которая получает метрики.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
CDC::GetPath
Извлекает координаты, определяющие конечные точки линий и контрольные точки кривых, найденных в пути, выбранном в контексте устройства.
int GetPath(
LPPOINT lpPoints,
LPBYTE lpTypes,
int nCount) const;
Параметры
lpPoints
Указывает на массив POINT
структур данных или CPoint
объектов, где размещаются конечные точки линии и точки управления кривой.
lpTypes
Указывает на массив байтов, где размещаются типы вершин. Значения являются одним из следующих значений:
PT_MOVETO
Указывает, что соответствующая точка вlpPoints
начале разрозначного рисунка.PT_LINETO
Указывает, что предыдущая точка и соответствующая точкаlpPoints
являются конечными точками строки.PT_BEZIERTO
Указывает, что соответствующая точка находится вlpPoints
контрольной точке или конечной точке для кривой Bzier.
PT_BEZIERTO
типы всегда происходят в наборах из трех. Точка в пути непосредственно перед ними определяет начальную точку для кривой Bzier. Первые две PT_BEZIERTO
точки являются контрольными точками, а третья PT_BEZIERTO
— конечная точка (если жестко закодирована).
Тип PT_LINETO
или тип можно объединить со следующим флагом (с помощью побитового оператора OR), чтобы указать, что соответствующая точка является последней точкой на рисунке и что рисунок должен быть PT_BEZIERTO
закрыт:
PT_CLOSEFIGURE
Указывает, что рисунок автоматически закрывается после рисования соответствующей линии или кривой. Рисунок закрывается путем рисования линии из конечной точки линии или кривой в точку, соответствующую последнейPT_MOVETO
.
nCount
Указывает общее количество POINT
структур данных, которые могут быть помещены в lpPoints
массив. Это значение должно совпадать с количеством байтов, которые могут быть помещены в lpTypes
массив.
Возвращаемое значение
nCount
Если параметр является ненулевой, количество перечисленных точек. Если nCount
значение равно 0, общее количество точек в пути (и GetPath
ничего не записывает в буферы). Если nCount
значение ненулевого значения меньше количества точек в пути, возвращаемое значение равно -1.
Замечания
Контекст устройства должен содержать закрытый путь. Точки пути возвращаются в логических координатах. Точки хранятся в пути в координатах устройства, поэтому GetPath
изменяет точки с координат устройства на логические координаты с помощью обратного текущего преобразования. Функция-член FlattenPath
может быть вызвана до GetPath
, чтобы преобразовать все кривые в пути в сегменты линий.
Пример
Пример см. в примере CDC::BeginPath
.
CDC::GetPixel
Извлекает значение цвета RGB пикселя в точке, заданной x
и *y*
.
COLORREF GetPixel(
int x,
int y) const;
COLORREF GetPixel(POINT point) const;
Параметры
x
Указывает логическую координату x точки для проверки.
y
Указывает логическую координату точки для проверки.
point
Задает логические координаты x-и y точки для проверки.
Возвращаемое значение
Для любой версии функции значение цвета RGB для цвета заданной точки. Это значение -1, если координаты не указывают точку в области вырезки.
Замечания
Точка должна находиться в регионе вырезки. Если точка отсутствует в области вырезки, функция не имеет эффекта и возвращает -1.
Не все устройства поддерживают функцию GetPixel
. Дополнительные сведения см. в RC_BITBLT
разделе о возможности растра в функции-члене GetDeviceCaps
.
Функция-член GetPixel
имеет две формы. Первый принимает два значения координат; второй принимает структуру POINT
или CPoint
объект.
CDC::GetPolyFillMode
Извлекает текущий режим заполнения многоугольников.
int GetPolyFillMode() const;
Возвращаемое значение
Текущий многоугольник или , ALTERNATE
WINDING
если функция выполнена успешно.
Замечания
Сведения о режимах заполнения многоугольников см. в SetPolyFillMode
функции-члене.
CDC::GetROP2
Извлекает текущий режим рисования.
int GetROP2() const;
Возвращаемое значение
Режим рисования. Список значений режима рисования см. в функции-члене SetROP2
.
Замечания
Режим рисования указывает, как цвета пера и интерьер заполненных объектов объединяются с цветом, уже на поверхности отображения.
CDC::GetSafeHdc
Вызовите эту функцию-член, чтобы получить m_hDC
, контекст выходного устройства.
HDC GetSafeHdc() const;
Возвращаемое значение
Дескриптор контекста устройства.
Замечания
Эта функция-член также работает с указателями NULL.
CDC::GetStretchBltMode
Извлекает текущий режим растягивания растровых изображений.
int GetStretchBltMode() const;
Возвращаемое значение
Возвращаемое значение указывает текущий режим растягивания растровых изображений ( STRETCH_ANDSCANS
STRETCH_DELETESCANS
или STRETCH_ORSCANS
), если функция выполнена успешно.
Замечания
Режим растягивания растровых карт определяет, как данные удаляются из растровых изображений, растянутых или сжатых функцией-членом StretchBlt
.
STRETCH_ORSCANS
Как STRETCH_ANDSCANS
правило, режимы используются для сохранения пикселей переднего плана в монохромных растровых изображениях. Обычно этот 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;
Параметры
lpszString
Указывает на символьную строку. Вы также можете передать CString
объект для этого параметра.
nCount
Указывает длину строки , на которую указывает lpszString
.
nTabPositions
Указывает количество позиций табуляции в массиве, на которое указывает lpnTabStopPositions
.
lpnTabStopPositions
Указывает на массив целых чисел, содержащих позиции табуляции в логических единицах. Остановки табуляции должны быть отсортированы по возрастанию порядка; Наименьшее x-значение должно быть первым элементом в массиве. Вкладки "Назад" не допускаются.
str
CString
Объект, содержащий указанные символы для рисования.
Возвращаемое значение
Размеры строки (в логических единицах) в объекте CSize
.
Замечания
Если строка содержит один или несколько символов табуляции, ширина строки зависит от табуляции, указанной в параметре lpnTabStopPositions
. Функция использует выбранный в данный момент шрифт для вычисления измерений строки.
Текущий регион вырезки не смещает ширину и высоту, возвращаемую функцией GetTabbedTextExtent
.
Так как некоторые устройства не помещают символы в обычные массивы ячеек (т. е. они кернируют символы), сумма экстентов символов в строке может не совпадать с степенью строки.
Если nTabPositions
значение равно 0 и lpnTabStopPositions
NULL
имеет значение, вкладки расширяются до восьми раз средней ширины символов. Если nTabPositions
значение равно 1, точки табуляции будут разделены расстоянием, указанным первым значением в массиве, в котором lpnTabStopPositions
указываются точки. Если lpnTabStopPositions
указывает на несколько значений, точка табуляции устанавливается для каждого значения в массиве до числа, указанного в nTabPositions
параметре.
CDC::GetTextAlign
Извлекает состояние флагов выравнивания текста для контекста устройства.
UINT GetTextAlign() const;
Возвращаемое значение
Состояние флагов выравнивания текста. Возвращаемое значение является одним или несколькими из следующих значений:
TA_BASELINE
Указывает выравнивание оси x и базовых показателей выбранного шрифта в ограничивающем прямоугольнике.TA_BOTTOM
Указывает выравнивание оси x и нижней части ограничивающего прямоугольника.TA_CENTER
Указывает выравнивание оси Y и центра ограничивающего прямоугольника.TA_LEFT
Указывает выравнивание оси Y и левой стороны ограничивающего прямоугольника.TA_NOUPDATECP
Указывает, что текущая позиция не обновляется.TA_RIGHT
Указывает выравнивание оси Y и правой стороны ограничивающего прямоугольника.TA_TOP
Указывает выравнивание оси x и верхней части ограничивающего прямоугольника.TA_UPDATECP
Указывает, что текущая позиция обновляется.
Замечания
Флаги выравнивания текста определяют, как TextOut
ExtTextOut
функции-члены выравнивают строку текста относительно начальной точки строки. Флаги выравнивания текста не обязательно одно битовые флаги и могут быть равны 0. Чтобы проверить, задан ли флаг, приложение должно выполнить следующие действия:
Примените побитовый оператор OR (
|
) к флагу и его связанным флагам, сгруппированные следующим образом:TA_LEFT
,TA_CENTER
иTA_RIGHT
TA_BASELINE
,TA_BOTTOM
иTA_TOP
TA_NOUPDATECP
иTA_UPDATECP
.
Примените побитовый оператор C++ AND (
&
) к результату и возвращаемогоGetTextAlign
значения.Проверьте равенство этого результата и флага.
CDC::GetTextCharacterExtra
Извлекает текущий параметр для количества интервалов между диаграммами.
int GetTextCharacterExtra() const;
Возвращаемое значение
Объем интервала между диаграммами.
Замечания
GDI добавляет этот интервал к каждому символу, включая символы останова, при записи строки текста в контекст устройства.
Значение по умолчанию для интервала между диаграммами равно 0.
CDC::GetTextColor
Извлекает текущий цвет текста.
COLORREF GetTextColor() const;
Возвращаемое значение
Текущий цвет текста в качестве значения цвета RGB.
Замечания
Цвет текста — это цвет переднего плана символов, рисуемых с помощью функций TextOut
элементов элемента GDI для вывода текста , ExtTextOut
и TabbedTextOut
.
CDC::GetTextExtent
Вызовите эту функцию-член, чтобы вычислить ширину и высоту строки текста с помощью текущего шрифта для определения измерений.
CSize GetTextExtent(
LPCTSTR lpszString,
int nCount) const;
CSize GetTextExtent(const CString& str) const;
Параметры
lpszString
Указывает на строку символов. Вы также можете передать CString
объект для этого параметра.
nCount
Указывает количество знаков в строке.
str
CString
Объект, содержащий указанные символы.
Возвращаемое значение
Размеры строки (в логических единицах) в объекте CSize
.
Замечания
Сведения извлекаются из m_hAttribDC
контекста устройства атрибута.
По умолчанию предполагается, что текст, для которого он извлекает измерение, GetTextExtent
устанавливается вдоль горизонтальной линии (т. е. escapement равно 0). При создании шрифта, указывающего ненулевое escapement, необходимо явно преобразовать угол текста, чтобы получить размеры строки.
Текущий регион вырезки не влияет на ширину и высоту, возвращаемую GetTextExtent
.
Так как некоторые устройства не помещают символы в обычные массивы ячеек (т. е. они выполняют кернинг), сумма экстентов символов в строке может не совпадать с степенью строки.
CDC::GetTextExtentExPointI
Извлекает количество символов в указанной строке, которая будет соответствовать заданному пространству и заполняет массив экстентом текста для каждого из этих символов.
BOOL GetTextExtentExPointI(
LPWORD pgiIn,
int cgi,
int nMaxExtent,
LPINT lpnFit,
LPINT alpDx,
LPSIZE lpSize) const;
Параметры
pgiIn
Указатель на массив глифовых индексов, для которых извлекаются экстенты.
cgi
Указывает количество глифов в массиве, на которое указывает pgiIn
.
nMaxExtent
Указывает максимальную допустимую ширину в логических единицах форматируемой строки.
lpnFit
Указатель на целое число, которое получает количество максимальное число символов, которое будет помещаться в пространство, указанное в nMaxExtent
поле. В противном lpnFit
случае nMaxExtent
NULL
игнорируется.
alpDx
Указатель на массив целых чисел, получающих частичные глифы. Каждый элемент в массиве дает расстояние в логических единицах между началом массива индексов глифов и одним из глифов, которые помещаются в пространство, указанное в nMaxExtent
поле. Хотя этот массив должен содержать по крайней мере столько элементов, сколько индексов глифов, указанных в cgi
параметре, функция заполняет массив экстентами только для сколько глифовых индексов, как указано в lpnFit
. Если lpnDx
это NULL
так, функция не вычисляет частичную ширину строк.
lpSize
Указатель на SIZE
структуру, которая получает измерения массива индексов глифов в логических единицах. Это значение не может быть равно NULL
.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Эта функция-член эмулирует функциональные возможности функции функции GetTextExtentExPointI
, как описано в пакете SDK для Windows.
CDC::GetTextExtentPointI
Извлекает ширину и высоту указанного массива глифовых индексов.
BOOL GetTextExtentPointI(
LPWORD pgiIn,
int cgi,
LPSIZE lpSize) const;
Параметры
pgiIn
Указатель на массив глифовых индексов, для которых извлекаются экстенты.
cgi
Указывает количество глифов в массиве, на которое указывает pgiIn
.
lpSize
Указатель на SIZE
структуру, которая получает измерения массива индексов глифов в логических единицах. Это значение не может быть равно NULL
.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Эта функция-член эмулирует функциональные возможности функции функции GetTextExtentPointI
, как описано в пакете SDK для Windows.
CDC::GetTextFace
Вызовите эту функцию-член, чтобы скопировать имя шрифта текущего шрифта в буфер.
int GetTextFace(
int nCount,
LPTSTR lpszFacename) const;
int GetTextFace(CString& rString) const;
Параметры
nCount
Задает размер буфера (в байтах). Если имя шрифта больше числа байтов, указанного этим параметром, имя усечено.
lpszFacename
Указывает на буфер для имени шрифта.
rString
Ссылка на объект CString
.
Возвращаемое значение
Число байтов, скопированных в буфер, не включая завершающий символ NULL. Если возникает ошибка, это значение 0.
Замечания
Имя шрифта копируется в виде строки, завершаемой значением NULL.
CDC::GetTextMetrics
Извлекает метрики для текущего шрифта с помощью контекста устройства атрибута.
BOOL GetTextMetrics(LPTEXTMETRIC lpMetrics) const;
Параметры
lpMetrics
Указывает на структуру TEXTMETRIC
, которая получает метрики.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
CDC::GetViewportExt
Извлекает x-и y-экстенты окна просмотра контекста устройства.
CSize GetViewportExt() const;
Возвращаемое значение
X-и y-экстенты (в единицах устройства) в качестве CSize
объекта.
CDC::GetViewportOrg
Извлекает координаты x-и y источника окна просмотра, связанного с контекстом устройства.
CPoint GetViewportOrg() const;
Возвращаемое значение
Источник окна просмотра (в координатах устройства) в качестве CPoint
объекта.
CDC::GetWindow
Возвращает окно, связанное с контекстом устройства отображения.
CWnd* GetWindow() const;
Возвращаемое значение
Указатель на объект в случае успешного CWnd
выполнения; в противном случае NULL
.
Замечания
Это расширенная функция. Например, эта функция-член может не возвращать окно представления при печати или предварительном просмотре. Он всегда возвращает окно, связанное с выходными данными. Выходные функции, использующие заданный контроллер домена в этом окне.
CDC::GetWindowExt
Извлекает x-и y-экстенты окна, связанного с контекстом устройства.
CSize GetWindowExt() const;
Возвращаемое значение
Экстенты x и y (в логических единицах) в качестве CSize
объекта.
CDC::GetWindowOrg
Извлекает координаты x-и y источника окна, связанного с контекстом устройства.
CPoint GetWindowOrg() const;
Возвращаемое значение
Источник окна (в логических координатах) в качестве CPoint
объекта.
CDC::GetWorldTransform
Извлекает текущее преобразование пространства мира в пространство страницы.
BOOL GetWorldTransform(XFORM& rXform) const;
Параметры
rXform
Ссылка на структуру, которая получает текущее XFORM
пространство в пространстве страницы.
Возвращаемое значение
Возвращает ненулевое значение при успешном выполнении.
Возвращает значение 0 при сбое.
Чтобы получить расширенные сведения об ошибке, вызовите функцию GetLastError
.
Замечания
Этот метод упаковывает функцию GetWorldTransform
GDI Windows.
CDC::GradientFill
Вызовите эту функцию-член, чтобы заполнить прямоугольник и треугольники структуры цветом, который плавно исчезает с одной стороны к другой.
BOOL GradientFill(
TRIVERTEX* pVertices,
ULONG nVertices,
void* pMesh,
ULONG nMeshElements,
DWORD dwMode);
Параметры
pVertices
Указатель на массив TRIVERTEX
структур, которые определяют вершину треугольника.
nVertices
Число вершин.
pMesh
Массив структур в режиме треугольника GRADIENT_TRIANGLE
GRADIENT_RECT
или массив структур в прямоугольном режиме.
nMeshElements
Количество элементов (треугольников или прямоугольников) в pMesh
.
dwMode
Задает режим градиентной заливки. Список возможных значений см GradientFill
. в пакете SDK для Windows.
Возвращаемое значение
Значение TRUE
в случае успешного выполнения; в противном случае — значение FALSE
.
Замечания
Дополнительные сведения см 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);
Параметры
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
, что это указатель на строку.
Возвращаемое значение
Ненулевое значение, если строка рисуется, или 0, если TextOut
функция или функция, предоставляемая приложением выходная функция, возвращала 0, или если недостаточно памяти для создания растрового изображения памяти для уменьшения размеров памяти.
Замечания
Функция вымевает текст независимо от выбранной кисти и фона. Функция-член GrayString
использует выбранный в данный момент шрифт. Перед MM_TEXT
использованием этой функции необходимо выбрать режим сопоставления.
Приложение может нарисовать неактивные (серые) строки на устройствах, поддерживающих сплошной серый цвет, не вызывая функцию-член GrayString
. Системный цвет — это сплошной серый цвет COLOR_GRAYTEXT
системы, используемый для рисования отключенного текста. Приложение может вызвать GetSysColor
функцию Windows, чтобы получить значение COLOR_GRAYTEXT
цвета. Если цвет отличается от 0 (черный), приложение может вызвать SetTextColor
функцию-член, чтобы задать цвет текста для значения цвета, а затем нарисовать строку напрямую. Если извлеченный цвет является черным, приложение должно вызвать GrayString
тусклый (серый) текст.
Если lpfnOutput
это NULL
так, GDI использует функцию Windows TextOut
и lpData
предполагается, что он является гораздо указателем на символ, который будет выводиться. Если выходные данные символов не могут обрабатываться TextOut
функцией-членом (например, строка хранится в виде растрового изображения), приложение должно предоставить собственную выходную функцию.
Все функции обратного вызова должны перехватывать исключения Microsoft Foundation перед возвращением в Windows, так как исключения нельзя создавать через границы обратного вызова. Дополнительные сведения об исключениях см. в статье "Исключения".
Функция обратного __stdcall
вызова, переданная для GrayString
использования соглашения о вызовах, должна экспортироваться с __declspec
помощью .
Когда платформа находится в режиме предварительной TextOut
версии, вызов функции-члена преобразуется в вызовGrayString
, а функция обратного вызова не вызывается.
CDC::HIMETRICtoDP
Эта функция используется при преобразовании HIMETRIC
размеров из OLE в пиксели.
void HIMETRICtoDP(LPSIZE lpSize) const;
Параметры
lpSize
Указывает на структуру SIZE
или CSize
объект.
Замечания
Если режим сопоставления объекта контекста устройства имеет MM_LOENGLISH
значение , MM_HIENGLISH
MM_LOMETRIC
или MM_HIMETRIC
преобразование основано на количестве пикселей на физическом дюйме. Если режим сопоставления является одним из других неократных режимов (например, MM_TEXT
), преобразование основано на количестве пикселей в логическом дюйме.
CDC::HIMETRICtoLP
Вызовите эту функцию для преобразования HIMETRIC
единиц в логические единицы.
void HIMETRICtoLP(LPSIZE lpSize) const;
Параметры
lpSize
Указывает на структуру SIZE
или CSize
объект.
Замечания
Используйте эту функцию при получении HIMETRIC
размеров из OLE и хотите преобразовать их в естественный режим сопоставления приложения.
Преобразование выполняется путем первого преобразования HIMETRIC
единиц в пиксели и последующего преобразования этих единиц в логические единицы с помощью текущих единиц сопоставления контекста устройства. Обратите внимание, что экстенты окна устройства и окна просмотра повлияют на результат.
CDC::IntersectClipRect
Создает новую область вырезки путем формирования пересечения текущего региона и прямоугольника, указанного x1
в , y1
x2
и y2
.
int IntersectClipRect(
int x1,
int y1,
int x2,
int y2);
int IntersectClipRect(LPCRECT lpRect);
Параметры
x1
Задает логическую координату x левого верхнего угла прямоугольника.
y1
Задает логическую координату Y верхнего левого угла прямоугольника.
x2
Задает логическую координату x правого нижнего угла прямоугольника.
y2
Задает логическую координату y правого нижнего угла прямоугольника.
lpRect
Задает прямоугольник. Для этого параметра можно передать CRect
объект или указатель на структуру RECT
.
Возвращаемое значение
Новый тип вырезки региона. Это может быть любое из следующих значений:
COMPLEXREGION
Новый регион вырезки имеет перекрывающиеся границы.ERROR
Недопустимый контекст устройства.NULLREGION
Новая область вырезки пуста.SIMPLEREGION
Новый регион вырезки не имеет перекрывающихся границ.
Замечания
GDI клипирует все последующие выходные данные, которые будут соответствовать новой границе. Ширина и высота не должны превышать 32 767.
CDC::InvertRect
Инвертирует содержимое заданного прямоугольника.
void InvertRect(LPCRECT lpRect);
Параметры
lpRect
Указывает на RECT
то, что содержит логические координаты прямоугольника, которые необходимо инвертировать. Вы также можете передать CRect
объект для этого параметра.
Замечания
Инверсия — это логическая операция NOT и перевернутые биты каждого пикселя. При монохромном отображении функция делает белые пиксели черными и черными пикселями белыми. При отображении цвета инверсия зависит от того, как создаются цвета для отображения. При вызове InvertRect
дважды с одинаковым прямоугольником экран восстанавливается до предыдущих цветов.
Если прямоугольник пуст, ничего не рисуется.
Пример
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);
Параметры
pRgn
Идентифицирует регион, который необходимо изменить. Координаты для региона указываются в логических единицах.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
При монохромном отображении функция делает белые пиксели черными и черными пикселями белыми. При отображении цвета инверсия зависит от того, как создаются цвета для отображения.
CDC::IsPrinting
Определяет, используется ли контекст устройства для печати.
BOOL IsPrinting() const;
Возвращаемое значение
Ненулевое CDC
значение, если объект является контроллером домена принтера; в противном случае — значение 0.
CDC::LineTo
Рисует линию от текущей позиции до, но не включая, точку, указанную x
и y
(или point
).
BOOL LineTo(
int x,
int y);
BOOL LineTo(POINT point);
Параметры
x
Задает логическую координату x конечной точки для строки.
y
Указывает логическую координату y конечной точки для строки.
point
Указывает конечную точку для строки. Для этого параметра можно передать структуру POINT
CPoint
или объект.
Возвращаемое значение
Ненулевое значение, если линия рисуется; в противном случае — 0.
Замечания
Линия рисуется с выбранным пером. Текущая позиция имеет x
значение , y
или значение point
.
Пример
Пример см. в примере CRect::CenterPoint
.
CDC::LPtoDP
Преобразует логические единицы в единицы устройства.
void LPtoDP(
LPPOINT lpPoints,
int nCount = 1) const;
void LPtoDP(LPRECT lpRect) const;
void LPtoDP(LPSIZE lpSize) const;
Параметры
lpPoints
Указывает на массив точек. Каждая точка в массиве — это POINT
структура или CPoint
объект.
nCount
Количество точек в массиве.
lpRect
Указывает на структуру RECT
CRect
или объект. Этот параметр используется для общего случая сопоставления прямоугольника из логических единиц устройств.
lpSize
Указывает на структуру SIZE
CSize
или объект.
Замечания
Функция сопоставляет координаты каждой точки или измерения размера из логической системы координат GDI в систему координат устройства. Преобразование зависит от текущего режима сопоставления и параметров источников и экстентов окна устройства и окна просмотра.
Координаты x- и y точек — 2-байтовые целые числа со знаком в диапазоне –32 768–32 767. В случаях, когда режим сопоставления приведет к значению, превышающим эти ограничения, система задает значения 32 768 и 32 767 соответственно.
CDC::LPtoHIMETRIC
Вызовите эту функцию для преобразования логических единиц в HIMETRIC
единицы.
void LPtoHIMETRIC(LPSIZE lpSize) const;
Параметры
lpSize
Указывает на структуру SIZE
CSize
или объект.
Замечания
Используйте эту функцию при добавлении HIMETRIC
размеров в OLE, преобразовывая из естественного режима сопоставления приложения. Экстенты окна устройства и окна просмотра повлияют на результат.
Преобразование выполняется путем первого преобразования логических единиц в пиксели с помощью текущих единиц сопоставления контекста устройства, а затем преобразования этих единиц в HIMETRIC
единицы.
CDC::m_hAttribDC
Контекст устройства атрибута для этого CDC
объекта.
HDC m_hAttribDC;
Замечания
По умолчанию этот контекст устройства равен m_hDC
. Как правило, вызовы GDI, запрашивающие сведения из контекста устройства, CDC
направляются в m_hAttribDC
. CDC
Дополнительные сведения об использовании этих двух контекстов устройств см. в описании класса.
CDC::m_hDC
Контекст выходного устройства для этого CDC
объекта.
HDC m_hDC;
Замечания
По умолчанию равно m_hAttribDC
другому m_hDC
контексту CDC
устройства. Как правило, вызовы GDI, создающие выходные m_hDC
данные, CDC
переходят в контекст устройства. Вы можете инициализировать 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);
Параметры
x
Задает логическую координату x левого верхнего угла прямоугольника назначения.
y
Задает логическую координату y верхнего левого угла прямоугольника назначения.
nWidth
Задает ширину в логических единицах целевого прямоугольника и исходного растрового изображения.
nHeight
Задает высоту в логических единицах целевого прямоугольника и исходного растрового изображения.
pSrcDC
Определяет контекст устройства, из которого копируется растровое изображение. Оно должно быть равно нулю, если dwRop
параметр указывает операцию растра, которая не включает источник.
xSrc
Задает логическую координату x левого верхнего угла исходного растрового изображения.
ySrc
Указывает логическую координату Y верхнего левого угла исходного растрового изображения.
maskBitmap
Определяет растровое изображение монохромной маски в сочетании с цветным растровым изображением в контексте исходного устройства.
xMask
Задает горизонтальное смещение пикселя для растрового изображения маски, указанного параметром maskBitmap
.
yMask
Указывает вертикальное смещение пикселя для растрового изображения маски, указанного параметром maskBitmap
.
dwRop
Задает коды операций переднего плана и фонового растра, которые функция использует для управления сочетанием исходных и целевых данных. Код операции фонового растра хранится в высоком байте большого слова этого значения; Код операции растра переднего плана хранится в низком байте высокого слова этого значения; Низкое слово этого значения игнорируется и должно быть равно нулю. Макрос MAKEROP4
создает такие сочетания кодов операций переднего плана и фонового растра. См. раздел "Примечания" для обсуждения переднего плана и фона в контексте этой функции. См. функцию-член BitBlt
для списка распространенных кодов операций растра.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Значение 1 в маске, указанное в maskBitmap
маске, указывает, что код операции растрового растра переднего плана, указанный в dwRop
этом расположении. Значение 0 в маске указывает, что код операции фонового растра, указанный dwRop
в этом расположении. Если для операций растра требуется источник, прямоугольник маски должен охватывать исходный прямоугольник. Если это не так, функция завершается ошибкой. Если для операций растра не требуется источник, прямоугольник маски должен охватывать прямоугольник назначения. Если это не так, функция завершается ошибкой.
Если преобразование поворота или переключения действует для контекста исходного устройства при вызове этой функции, возникает ошибка. Однако разрешены другие типы преобразований.
Если цветовые форматы исходного, шаблона и целевого растровых изображений отличаются, эта функция преобразует шаблон или исходный формат, или оба, чтобы соответствовать целевому формату. Если растровое изображение маски не является однохромным, возникает ошибка. При записи расширенного метафайла возникает ошибка (и функция возвращает 0), если контекст исходного устройства определяет расширенный контекст метафайла устройства. Не все устройства поддерживаются MaskBlt
. Приложение должно вызываться GetDeviceCaps
, чтобы определить, поддерживает ли устройство эту функцию. Если растровое изображение маски не предоставлено, эта функция ведет себя точно так BitBlt
же, используя код операции растра переднего плана. Смещение пикселей в схеме растровой карты маски с точкой (0,0) в растровом рисунке исходного устройства. Это полезно для случаев, когда растровое изображение маски содержит набор маски; Приложение может легко применить любой из них к задаче маскирования, изменив смещения пикселей и размеры прямоугольника, отправленные MaskBlt
в .
CDC::ModifyWorldTransform
Изменяет преобразование мира для контекста устройства с помощью указанного режима.
BOOL ModifyWorldTransform(
const XFORM& rXform,
DWORD iMode);
Параметры
rXform
Ссылка на структуру, XFORM
используемую для изменения преобразования мира для данного контекста устройства.
iMode
Указывает, как данные преобразования изменяют текущее преобразование мира. Список значений, которые может принимать этот параметр, см. в разделе ModifyWorldTransform
.
Возвращаемое значение
Возвращает ненулевое значение при успешном выполнении.
Возвращает значение 0 при сбое.
Чтобы получить расширенные сведения об ошибке, вызовите функцию GetLastError
.
Замечания
Этот метод упаковывает функцию ModifyWorldTransform
GDI Windows.
CDC::MoveTo
Перемещает текущую позицию в точку, указанную x
и y
(или по point
).
CPoint MoveTo(
int x,
int y);
CPoint MoveTo(POINT point);
Параметры
x
Задает логическую координату x новой позиции.
y
Задает логическую координату y новой позиции.
point
Задает новую позицию. Для этого параметра можно передать структуру POINT
CPoint
или объект.
Возвращаемое значение
Координаты x-и y предыдущей позиции в качестве CPoint
объекта.
Пример
Пример см. в примере CRect::CenterPoint
.
CDC::OffsetClipRgn
Перемещает область вырезки контекста устройства по указанным смещениям.
int OffsetClipRgn(
int x,
int y);
int OffsetClipRgn(SIZE size);
Параметры
x
Указывает количество логических единиц для перемещения влево или вправо.
y
Указывает количество логических единиц для перемещения вверх или вниз.
size
Указывает сумму смещения.
Возвращаемое значение
Тип нового региона. Это может быть любое из следующих значений:
COMPLEXREGION
Область вырезки имеет перекрывающиеся границы.ERROR
Недопустимый контекст устройства.NULLREGION
Область вырезки пуста.SIMPLEREGION
Область вырезки не имеет перекрывающихся границ.
Замечания
Функция перемещает единицы региона x
вдоль оси x и y
единиц вдоль оси y.
CDC::OffsetViewportOrg
Изменяет координаты источника представления относительно координат текущего источника представления.
virtual CPoint OffsetViewportOrg(
int nWidth,
int nHeight);
Параметры
nWidth
Указывает количество единиц устройства, добавляемых в координату x-координат текущего источника.
nHeight
Указывает количество единиц устройства, добавляемых в координату y текущего источника.
Возвращаемое значение
Предыдущий источник окна просмотра (в координатах устройства) в качестве CPoint
объекта.
CDC::OffsetWindowOrg
Изменяет координаты источника окна относительно координат текущего источника окна.
CPoint OffsetWindowOrg(
int nWidth,
int nHeight);
Параметры
nWidth
Указывает количество логических единиц, добавляемых в координату x-координат текущего источника.
nHeight
Указывает количество логических единиц, добавляемых в координату y текущего источника.
Возвращаемое значение
Предыдущий источник окна (в логических координатах) в качестве CPoint
объекта.
CDC::operator HDC
Используйте этот оператор для получения дескриптора контекста CDC
устройства объекта.
operator HDC() const;
Возвращаемое значение
В случае успешного выполнения дескриптор объекта контекста устройства; NULL
в противном случае .
Замечания
Вы можете использовать дескриптор для вызова API Windows напрямую.
CDC::PaintRgn
Заполняет область, указанную pRgn
с помощью текущей кисти.
BOOL PaintRgn(CRgn* pRgn);
Параметры
pRgn
Определяет регион, который нужно заполнить. Координаты для заданного региона указываются в логических единицах.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
CDC::PatBlt
Создает битовый шаблон на устройстве.
BOOL PatBlt(
int x,
int y,
int nWidth,
int nHeight,
DWORD dwRop);
Параметры
x
Указывает логическую координату x левого верхнего угла прямоугольника, который требуется получить шаблон.
y
Указывает логическую координату Y верхнего левого угла прямоугольника, который требуется получить шаблон.
nWidth
Задает ширину (в логических единицах) прямоугольника, который требуется получить шаблон.
nHeight
Указывает высоту (в логических единицах) прямоугольника, который требуется получить шаблон.
dwRop
Задает код операции растра. Коды операций растровых операций (ROPS) определяют, как GDI объединяет цвета в выходных операциях, включающих текущую кисть, возможное исходное растровое изображение и целевое растровое изображение. Этот параметр может принимать одно из следующих значений :
PATCOPY
Копирует шаблон в точечный рисунок назначения.PATINVERT
Объединяет растровое изображение назначения с шаблоном с помощью логического оператора XOR (^
).DSTINVERT
Инвертирует точечный рисунок назначения.BLACKNESS
Превращает все выходные данные черным.WHITENESS
Преобразует весь выходной белый цвет.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Шаблон — это сочетание выбранной кисти и шаблона, уже на устройстве. Код операции растра, указанный в 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);
Параметры
x1
Задает координату x левого верхнего угла ограничивающего прямоугольника (в логических единицах).
y1
Задает координату y верхнего левого угла ограничивающего прямоугольника (в логических единицах).
x2
Задает координату x правого нижнего угла ограничивающего прямоугольника (в логических единицах).
y2
Указывает координату Y правого нижнего угла ограничивающего прямоугольника (в логических единицах).
x3
Задает координату x начальной точки дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.
y3
Задает координату y начальной точки дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.
x4
Задает координату x конечной точки arc (в логических единицах). Этой точке не нужно лежать точно на дуге.
y4
Задает координату y конечной точки дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.
lpRect
Задает ограничивающий прямоугольник. Для этого параметра можно передать CRect
объект или указатель на структуру RECT
.
ptStart
Указывает начальную точку дуги. Этой точке не нужно лежать точно на дуге. Для этого параметра можно передать структуру POINT
CPoint
или объект.
ptEnd
Указывает конечную точку дуги. Этой точке не нужно лежать точно на дуге. Для этого параметра можно передать структуру POINT
CPoint
или объект.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Центр дуги — это центр ограничивающего прямоугольника, указанного x1
в , y1
x2
и y2
(или поlpRect
). Начальные и конечные точки дуги задаются x3
, y3
x4
и y4
(или по ptStart
иptEnd
).
Дуга рисуется с выбранным пером, перемещаясь в направлении со счетчиком. Две другие линии извлекаются из каждой конечной точки в центр дуги. Круговая область заполняется текущей кистью. Если равно и равно, результатом является многоточие с одной линией от центра эллипса до точки (x3
, y3
) или (x4
, y4
).y4
y3
x4
x3
Рисунок, рисуемый этой функцией, расширяется до, но не включает правые и нижние координаты. Это означает, что высота фигуры и y2
- y1
ширина фигуры .x2
- x1
Ширина и высота ограничивающего прямоугольника должны быть больше 2 единиц и меньше 32 767 единиц.
Пример
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);
Параметры
hMF
Определяет метафайл, который необходимо воспроизвести.
hEnhMetaFile
Определяет расширенный метафайл.
lpBounds
Указывает на RECT
структуру или CRect
объект, содержащий координаты ограничивающего прямоугольника, используемого для отображения рисунка. Координаты указываются в логических единицах.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Метафайл можно воспроизводить любое количество раз.
Вторая версия 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);
Параметры
lpPoint
Указывает на массив из трех точек в логическом пространстве, который определяет три угла целевой параллелограммы. Верхний левый угол исходного прямоугольника сопоставляется с первой точкой в этом массиве, правым верхним углом второй точки в этом массиве и левым нижним углом к третьей точке. Правый нижний угол исходного прямоугольника сопоставляется с неявной четвертой точкой параллелограммы.
pSrcDC
Определяет контекст исходного устройства.
xSrc
Задает координату x в логических единицах левого верхнего угла исходного прямоугольника.
ySrc
Задает координату y в логических единицах верхнего левого угла исходного прямоугольника.
nWidth
Задает ширину в логических единицах исходного прямоугольника.
nHeight
Задает высоту в логических единицах исходного прямоугольника.
maskBitmap
Определяет необязательное однохромное растровое изображение, которое используется для маскирования цветов исходного прямоугольника.
xMask
Указывает координату x левого верхнего угла однохромного растрового изображения.
yMask
Указывает координату y левого верхнего угла растрового изображения монохромного.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Если заданный дескриптор битовой маски идентифицирует допустимое монохромное растровое изображение, функция использует эту растровую карту для маскирования битов цветных данных из исходного прямоугольника.
Четвертая вершина параллелограммы (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);
Параметры
lpPoints
Указывает на массив POINT
структур данных, содержащих конечные точки и контрольные точки сплайнов.
nCount
Указывает количество точек в массиве lpPoints
. Это значение должно быть более трех раз, чем количество линий сплайнов, так как каждая строка Bzier требует двух контрольных точек и конечной точки, а начальная строка сплайна требует другой начальной точки.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Эта функция рисует кубическую линию Bzier с помощью конечных точек и точек управления, указанных параметром lpPoints
. Первая сплайн рисуется с первой точки на четвертую точку с помощью второй и третьей точек в качестве контрольных точек. Каждая следующая строка сплайна в последовательности требует ровно трех дополнительных точек: конечная точка предыдущей сплайна используется в качестве отправной точки, следующие две точки последовательности являются контрольными точками, а третья — конечной точкой.
Текущая позиция не используется или обновляется функцией PolyBezier
. Рисунок не заполнен. Эта функция рисует линии с помощью текущего пера.
CDC::PolyBezierTo
Рисует одну или несколько сплайнов Bzier.
BOOL PolyBezierTo(
const POINT* lpPoints,
int nCount);
Параметры
lpPoints
Указывает на массив POINT
структур данных, содержащих конечные точки и контрольные точки.
nCount
Указывает количество точек в массиве lpPoints
. Это значение должно быть в три раза больше, чем количество линий сплайнов, так как каждая строка Bzier требует двух контрольных точек и конечной точки.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Эта функция рисует кубическую линию Bzier с помощью точек управления, указанных параметром lpPoints
. Первая строка сплайна извлекается из текущей позиции в третью точку с помощью первых двух точек в качестве контрольных точек. Для каждой последующей сплайн функции требуется ровно три пункта и использует конечную точку предыдущего сплайна в качестве отправной точки для следующей. PolyBezierTo
перемещает текущую позицию в конечную точку последнего сплайна Bzier. Рисунок не заполнен. Эта функция рисует линии с помощью текущего пера.
Пример
Пример см. в примере CDC::BeginPath
.
CDC::PolyDraw
Рисует набор сегментов линий и сплайнов Bzier.
BOOL PolyDraw(
const POINT* lpPoints,
const BYTE* lpTypes,
int nCount);
Параметры
lpPoints
Указывает на массив POINT
структур данных, содержащих конечные точки для каждого сегмента строки, конечных точек и точек управления для каждой сплайна Bzier.
lpTypes
Указывает на массив, указывающий, как используется каждая точка в массиве lpPoints
. Значением может быть одно из следующих.
PT_MOVETO
Указывает, что эта точка запускает разрознающую фигуру. Эта точка становится новой текущей позицией.PT_LINETO
Указывает, что линия должна быть получена из текущей позиции до этой точки, которая затем становится новой текущей позицией.PT_BEZIERTO
Указывает, что эта точка является контрольной точкой или конечной точкой для сплайна Bzier.
PT_BEZIERTO
типы всегда происходят в наборах из трех. Текущая позиция определяет начальную точку для сплайна Bzier. Первые две PT_BEZIERTO
точки — это контрольные точки, а третья PT_BEZIERTO
— конечная точка. Конечная точка становится новой текущей позицией. Если нет трех последовательных PT_BEZIERTO
точек, результаты ошибки.
PT_BEZIERTO
Тип PT_LINETO
или тип можно объединить со следующей константой с помощью побитового оператора OR, чтобы указать, что соответствующая точка является последней точкой на рисунке, и рисунок закрыт:
PT_CLOSEFIGURE
Указывает, что рисунок автоматически закрывается послеPT_LINETO
завершения илиPT_BEZIERTO
типа для этой точки. Линия рисуется с этой точки до последнейPT_MOVETO
точки илиMoveTo
точки.Этот флаг сочетается с
PT_LINETO
типом строки илиPT_BEZIERTO
типом конечной точки для линии Bzier с помощью побитового оператора OR . Текущая позиция устанавливается в конечную точку закрывающей линии.
nCount
Указывает общее количество точек в lpPoints
массиве, то же самое, что и количество байтов в массиве lpTypes
.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Эту функцию можно использовать для рисования несвязанных цифр вместо последовательных вызовов CDC::MoveTo
и CDC::LineTo
CDC::PolyBezierTo
функций-членов. Линии и линии рисуются с помощью текущего пера, и цифры не заполняются. Если активен путь, запущенный вызовом CDC::BeginPath
функции-члена, PolyDraw
добавляется в путь. Точки, содержащиеся в массиве lpPoints
, и указывают lpTypes
, является ли каждая точка частью CDC::MoveTo
операции, а CDC::LineTo
также операцией CDC::BezierTo
. Кроме того, можно закрыть цифры. Эта функция обновляет текущую позицию.
Пример
Пример см. в примере CDC::BeginPath
.
CDC::Polygon
Рисует многоугольник, состоящий из двух или более точек (вершин), подключенных по линиям, с помощью текущего пера.
BOOL Polygon(
LPPOINT lpPoints,
int nCount);
Параметры
lpPoints
Указывает на массив точек, указывающих вершины многоугольника. Каждая точка в массиве — это POINT
структура или CPoint
объект.
nCount
Указывает количество вершин в массиве.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Система автоматически закрывает многоугольник, при необходимости нарисовав линию от последней вершины к первой.
Текущий режим заполнения многоугольников можно получить или задать с помощью GetPolyFillMode
функций-членов.SetPolyFillMode
Пример
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);
Параметры
lpPoints
Указывает на массив POINT
структур или CPoint
объектов, которые должны быть подключены.
nCount
`
Указывает количество точек в массиве. Это значение должно быть не менее 2.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Линии рисуются из первой точки через последующие точки с помощью текущего пера. LineTo
В отличие от функции-члена, Polyline
функция не использует или не обновляет текущую позицию.
Дополнительные сведения см PolyLine
. в пакете SDK для Windows.
CDC::PolylineTo
Рисует одну или несколько прямых линий.
BOOL PolylineTo(
const POINT* lpPoints,
int nCount);
Параметры
lpPoints
Указывает на массив POINT
структур данных, содержащих вершины линии.
nCount
Указывает количество точек в массиве.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Линия извлекается из текущей позиции до первой точки, указанной lpPoints
параметром с помощью текущего пера. Для каждой дополнительной строки функция извлекает из конечной точки предыдущей строки на следующую точку, указанную lpPoints
. PolylineTo
перемещает текущую позицию в конечную точку последней строки. Если сегменты линии, рисуемые этой функцией, образуют закрытую фигуру, рисунок не заполняется.
CDC::PolyPolygon
Создает два или более многоугольников, заполненных с помощью текущего режима заполнения многоугольников.
BOOL PolyPolygon(
LPPOINT lpPoints,
LPINT lpPolyCounts,
int nCount);
Параметры
lpPoints
Указывает на массив структур или CPoint
объектов, определяющих POINT
вершины многоугольников.
lpPolyCounts
Указывает на массив целых чисел, каждый из которых указывает количество точек в одном из многоугольников в массиве lpPoints
.
nCount
Количество записей в массиве lpPolyCounts
. Это число указывает количество многоугольников, которые необходимо нарисовать. Это значение должно быть не менее 2.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Многоугольники могут быть несвязанными или перекрывающимися.
Каждый многоугольник, указанный в вызове PolyPolygon
функции, должен быть закрыт. В отличие от многоугольников, созданных Polygon
функцией-членом, многоугольники, созданные PolyPolygon
не закрываются автоматически.
Функция создает два или более многоугольников. Чтобы создать один многоугольник, приложение должно использовать функцию-член Polygon
.
Текущий режим заполнения многоугольников можно получить или задать с помощью GetPolyFillMode
функций-членов.SetPolyFillMode
CDC::PolyPolyline
Рисует несколько рядов сегментов подключенной линии.
BOOL PolyPolyline(
const POINT* lpPoints,
const DWORD* lpPolyPoints,
int nCount);
Параметры
lpPoints
Указывает на массив структур, содержащих вершины полилайнов. Полилайны задаются последовательно.
lpPolyPoints
Указывает на массив переменных, указывающий количество точек в lpPoints
массиве для соответствующего многоугольника. Каждая запись должна быть больше или равна 2.
nCount
Указывает общее количество счетчиков в массиве lpPolyPoints
.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Сегменты линий рисуются с помощью текущего пера. Цифры, сформированные сегментами, не заполняются. Текущая позиция не используется или обновляется этой функцией.
CDC::PtVisible
Определяет, находится ли данная точка в области вырезки контекста устройства.
virtual BOOL PtVisible(
int x,
int y) const;
BOOL PtVisible(POINT point) const;
Параметры
x
Указывает логическую координату x точки.
y
Задает логическую координату точки y.
point
Указывает точку для проверки логических координат. Для этого параметра можно передать структуру POINT
CPoint
или объект.
Возвращаемое значение
Ненулевое значение, если указанная точка находится в регионе вырезки; в противном случае — 0.
CDC::QueryAbort
Вызывает функцию прерывания, SetAbortProc
установленную функцией-членом для приложения печати, и запрашивает, следует ли завершить печать.
BOOL QueryAbort() const;
Возвращаемое значение
Возвращаемое значение ненулевое, если печать должна продолжаться или нет процедуры прерывания. Значение 0, если задание печати должно быть завершено. Возвращаемое значение предоставляется функцией прерывания.
CDC::RealizePalette
Сопоставляет записи из текущей логической палитры с системной палитрой.
UINT RealizePalette();
Возвращаемое значение
Указывает, сколько записей в логической палитре сопоставлено с различными записями в системной палитре. Это представляет количество записей, которые эта функция переназначалась для изменения в системной палитре, так как логическая палитра была реализована в последний раз.
Замечания
Логическая цветовая палитра выступает в качестве буфера между цветоемкими приложениями и системой, что позволяет приложению использовать столько цветов, сколько необходимо, не вмешиваясь в собственные отображаемые цвета или цвета, отображаемые другими окнами.
Если окно имеет фокус ввода и вызовы RealizePalette
, Windows гарантирует, что окно будет отображать все запрошенные цвета, вплоть до максимального числа одновременно доступных на экране. Windows также отображает цвета, не найденные в палитре окна, сопоставляя их с доступными цветами.
Кроме того, Windows соответствует цветам, запрошенным неактивными окнами, которые вызывают функцию как можно ближе к доступным цветам. Это значительно уменьшает нежелательные изменения цветов, отображаемых в неактивных окнах.
CDC::Rectangle
Рисует прямоугольник с помощью текущего пера.
BOOL Rectangle(
int x1,
int y1,
int x2,
int y2);
BOOL Rectangle(LPCRECT lpRect);
Параметры
x1
Указывает координату x левого верхнего угла прямоугольника (в логических единицах).
y1
Задает координату y левого верхнего угла прямоугольника (в логических единицах).
x2
Задает координату x правого нижнего угла прямоугольника (в логических единицах).
y2
Указывает координату y правого нижнего угла прямоугольника (в логических единицах).
lpRect
Задает прямоугольник в логических единицах. Для этого параметра можно передать CRect
объект или указатель на структуру RECT
.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Интерьер прямоугольника заполняется с помощью текущей кисти.
Прямоугольник расширяется до, но не включает, правые и нижние координаты. Это означает, что высота прямоугольника равна y2
- y1
ширине прямоугольника.x2
- x1
Ширина и высота прямоугольника должны быть больше 2 единиц и меньше 32 767 единиц.
Пример
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;
Параметры
lpRect
Указывает на RECT
структуру или CRect
объект, содержащий логические координаты указанного прямоугольника.
Возвращаемое значение
Ненулевое значение, если какая-либо часть заданного прямоугольника находится в области вырезки; в противном случае — 0.
CDC::ReleaseAttribDC
Вызовите эту функцию-член, чтобы задать m_hAttribDC
значение NULL.
virtual void ReleaseAttribDC();
Замечания
Это не приводит Detach
к возникновению ошибки. К объекту подключен CDC
только контекст выходного устройства, и его можно отсоединить.
CDC::ReleaseOutputDC
Вызовите эту функцию-член, чтобы задать для m_hDC
элемента значение NULL
.
virtual void ReleaseOutputDC();
Замечания
Эта функция-член не может вызываться при присоединении контекста выходного устройства к объекту CDC
. Используйте функцию-член, Detach
чтобы отключить контекст выходного устройства.
CDC::ResetDC
Вызовите эту функцию-член, чтобы обновить контекст устройства, завернутый CDC
объектом.
BOOL ResetDC(const DEVMODE* lpDevMode);
Параметры
lpDevMode
Указатель на структуру Windows DEVMODE
.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Контекст устройства обновляется из сведений, указанных в структуре Windows DEVMODE
. Эта функция-член сбрасывает только контекст устройства атрибута.
Приложение обычно использует ResetDC
функцию-член, когда окно обрабатывает WM_DEVMODECHANGE
сообщение. Эту функцию-член можно также использовать для изменения ориентации бумаги или бумажных корзин при печати документа.
Эту функцию-член нельзя использовать для изменения имени драйвера, имени устройства или выходного порта. Когда пользователь изменяет имя подключения к порту или устройств, необходимо удалить исходный контекст устройства и создать новый контекст устройства с новыми сведениями.
Прежде чем вызывать эту функцию-член, необходимо убедиться, что все объекты (кроме объектов акций), выбранные в контексте устройства, были выбраны.
CDC::RestoreDC
Восстанавливает контекст устройства до предыдущего состояния, определяемого nSavedDC
.
virtual BOOL RestoreDC(int nSavedDC);
Параметры
nSavedDC
Указывает контекст устройства, который требуется восстановить. Это может быть значение, возвращаемое предыдущим SaveDC
вызовом функции. Если nSavedDC
значение равно -1, то восстанавливается последний сохраненный контекст устройства.
Возвращаемое значение
Ненулевое значение, если указанный контекст был восстановлен; в противном случае — 0.
Замечания
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);
Параметры
x1
Указывает координату x левого верхнего угла прямоугольника (в логических единицах).
y1
Задает координату y левого верхнего угла прямоугольника (в логических единицах).
x2
Задает координату x правого нижнего угла прямоугольника (в логических единицах).
y2
Указывает координату y правого нижнего угла прямоугольника (в логических единицах).
x3
Задает ширину многоточия, используемой для рисования округлых углов (в логических единицах).
y3
Задает высоту многоточия, используемого для рисования округлых углов (в логических единицах).
lpRect
Указывает ограничивающий прямоугольник в логических единицах. Для этого параметра можно передать CRect
объект или указатель на структуру RECT
.
point
Координата x point
указывает ширину многоточия для рисования округлых углов (в логических единицах). Координата y point
указывает высоту многоточия для рисования округлых углов (в логических единицах). Для этого параметра можно передать структуру POINT
CPoint
или объект.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Интерьер прямоугольника заполняется с помощью текущей кисти.
Рисунок, который рисует эта функция, расширяется до, но не включает правые и нижние координаты. Это означает, что высота фигуры и y2
- y1
ширина фигуры .x2
- x1
Высота и ширина ограничивающего прямоугольника должны быть больше 2 единиц и меньше 32 767 единиц.
Пример
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();
Возвращаемое значение
Целое число, определяющее сохраненный контекст устройства. Если возникает ошибка, это значение 0. Это возвращаемое значение можно использовать для восстановления контекста устройства путем вызова RestoreDC
.
Замечания
С помощью сохраненного контекста устройства можно восстановить.RestoreDC
SaveDC
можно использовать любое количество раз, чтобы сохранить любое количество состояний контекста устройства.
CDC::ScaleViewportExt
Изменяет экстенты окна просмотра относительно текущих значений.
virtual CSize ScaleViewportExt(
int xNum,
int xDenom,
int yNum,
int yDenom);
Параметры
xNum
Указывает объем, на который умножается текущий x-экстент.
xDenom
Указывает объем, по которому можно разделить результат умножения текущего xNum
x-экстента на значение параметра.
yNum
Указывает объем, на который умножается текущая степень y.
yDenom
Указывает объем, по которому следует разделить результат умножения текущего yNum
y-экстента на значение параметра.
Возвращаемое значение
Предыдущие экстенты представления (в единицах устройства) в качестве CSize
объекта.
Замечания
Формулы записываются следующим образом:
xNewVE = ( xOldVE * xNum ) / xDenom
yNewVE = ( yOldVE * yNum ) / yDenom
Новые экстенты представления вычисляются путем умножения текущих экстентов на заданный числитель, а затем деления по заданному знаменателю.
CDC::ScaleWindowExt
Изменяет экстенты окна относительно текущих значений.
virtual CSize ScaleWindowExt(
int xNum,
int xDenom,
int yNum,
int yDenom);
Параметры
xNum
Указывает объем, на который умножается текущий x-экстент.
xDenom
Указывает объем, по которому можно разделить результат умножения текущего xNum
x-экстента на значение параметра.
yNum
Указывает объем, на который умножается текущая степень y.
yDenom
Указывает объем, по которому следует разделить результат умножения текущего yNum
y-экстента на значение параметра.
Возвращаемое значение
Предыдущие экстенты окна (в логических единицах) в качестве CSize
объекта.
Замечания
Формулы записываются следующим образом:
xNewWE = ( xOldWE * xNum ) / xDenom
yNewWE = ( yOldWE * yNum ) / yDenom
Новые экстенты окна вычисляются путем умножения текущих экстентов на заданный числитель, а затем деления на заданный знаменатель.
CDC::ScrollDC
Прокручивает прямоугольник битов по горизонтали и по вертикали.
BOOL ScrollDC(
int dx,
int dy,
LPCRECT lpRectScroll,
LPCRECT lpRectClip,
CRgn* pRgnUpdate,
LPRECT lpRectUpdate);
Параметры
dx
Указывает количество горизонтальных единиц прокрутки.
dy
Указывает количество единиц вертикальной прокрутки.
lpRectScroll
Указывает на RECT
структуру или CRect
объект, содержащий координаты прямоугольника прокрутки.
lpRectClip
Указывает на RECT
структуру или CRect
объект, содержащий координаты прямоугольника обрезки. Если этот прямоугольник меньше исходного, на который указывает lpRectScroll
, прокрутка происходит только в меньшем прямоугольнике.
pRgnUpdate
Определяет регион, обнаруженный процессом прокрутки. Функция ScrollDC
определяет этот регион; это не обязательно прямоугольник.
lpRectUpdate
Указывает на RECT
структуру или CRect
объект, получающий координаты прямоугольника, ограничивающего область обновления прокрутки. Это самая большая прямоугольная область, требующая переопределений. Значения в структуре или объекте, когда функция возвращается в клиентских координатах, независимо от режима сопоставления для заданного контекста устройства.
Возвращаемое значение
Ненулевое значение, если выполняется прокрутка; в противном случае — 0.
Замечания
Если lpRectUpdate
это NULL
так, Windows не вычисляет прямоугольник обновления. Если оба pRgnUpdate
и lpRectUpdate
есть NULL
, Windows не вычисляет регион обновления. Если pRgnUpdate
это не NULL
так, Windows предполагает, что он содержит допустимый указатель на регион, обнаруженный процессом прокрутки (определяется ScrollDC
функцией-членом). Регион обновления, возвращенный в lpRectUpdate
, может быть передан CWnd::InvalidateRgn
в случае необходимости.
Приложение должно использовать ScrollWindow
функцию-член класса CWnd
, если необходимо прокрутить всю клиентскую область окна. В противном случае он должен использовать ScrollDC
.
CDC::SelectClipPath
Выбирает текущий путь в качестве области вырезки для контекста устройства, сочетая новый регион с любым существующим регионом вырезки с помощью указанного режима.
BOOL SelectClipPath(int nMode);
Параметры
nMode
Указывает способ использования пути. Допустимы следующие значения:
RGN_AND
Новый регион вырезки включает пересечение (перекрывающиеся области) текущей области вырезки и текущего пути.RGN_COPY
Новый регион вырезки — это текущий путь.RGN_DIFF
Новый регион вырезки включает в себя области текущего вырезки, а те из текущего пути исключены.RGN_OR
Новый регион вырезки включает объединение (объединенные области) текущего региона вырезки и текущего пути.RGN_XOR
Новый регион вырезки включает объединение текущего региона вырезки и текущего пути, но без перекрывающихся областей.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Контекст устройства должен содержать закрытый путь.
CDC::SelectClipRgn
Выбирает заданный регион в качестве текущей области вырезки для контекста устройства.
int SelectClipRgn(CRgn* pRgn);
int SelectClipRgn(
CRgn* pRgn,
int nMode);
Параметры
pRgn
Определяет выбранный регион.
Для первой версии этой функции, если это значение
NULL
имеет значение, выбрана вся клиентская область и выходные данные по-прежнему обрезаются в окне.Для второй версии этой функции этот дескриптор может быть
NULL
только в том случае, еслиRGN_COPY
указан режим.
nMode
Указывает операцию, выполняемую. Это должно быть одно из следующих значений:
RGN_AND
Новый регион вырезки объединяет перекрывающиеся области текущего обрезки и регион,pRgn
определенный.RGN_COPY
Новый регион вырезки — это копия региона, определяемогоpRgn
. Это функция идентична первой версииSelectClipRgn
. Если регион определен,pRgn
NULL
новый регион вырезки становится областью вырезки по умолчанию (пустой регион).RGN_DIFF
Новый регион вырезки объединяет области текущего обрезки с этими областями, исключенными из региона, определяемогоpRgn
.RGN_OR
Новый регион вырезки объединяет текущий регион вырезки и регион, определенныйpRgn
.RGN_XOR
Новый регион вырезки объединяет текущий регион вырезки и регион,pRgn
определенный, но исключает любые перекрывающиеся области.
Возвращаемое значение
Тип региона. В качестве такой точки может выступать любой из следующих вариантов:
COMPLEXREGION
Новый регион вырезки имеет перекрывающиеся границы.ERROR
Контекст устройства или регион недопустимы.NULLREGION
Новая область вырезки пуста.SIMPLEREGION
Новый регион вырезки не имеет перекрывающихся границ.
Замечания
Используется только копия выбранного региона. Сам регион можно выбрать для любого количества других контекстов устройства или его можно удалить.
Функция предполагает, что координаты для данного региона указаны в единицах устройства. Некоторые устройства принтера поддерживают вывод текста с более высоким разрешением, чем графические выходные данные, чтобы сохранить точность, необходимую для выражения текстовых метрик. Эти устройства сообщают об единицах устройства с более высоким разрешением, то есть в текстовых единицах. Затем эти устройства масштабируют координаты для графики, чтобы несколько единиц устройств сопоставлялись только с 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);
Параметры
pPen
Указатель на выбранный CPen
объект.
pBrush
Указатель на выбранный CBrush
объект.
pFont
Указатель на выбранный CFont
объект.
pBitmap
Указатель на выбранный CBitmap
объект.
pRgn
Указатель на выбранный CRgn
объект.
pObject
Указатель на выбранный CGdiObject
объект.
Возвращаемое значение
Указатель на замещаемый объект. Это указатель на объект одного из классов, производных от CGdiObject
, например CPen
, в зависимости от используемой версии функции. Возвращаемое значение имеет значение NULL
, если возникла ошибка. Эта функция может вернуть указатель на временный объект. Этот временный объект действителен только во время обработки одного сообщения Windows. Дополнительные сведения см. в разделе CGdiObject::FromHandle
.
Версия функции-члена, которая принимает параметр региона, выполняет ту же задачу, что SelectClipRgn
и функция-член. Возвращаемое значение может быть любым из следующих значений:
COMPLEXREGION
Новый регион вырезки имеет перекрывающиеся границы.ERROR
Контекст устройства или регион недопустимы.NULLREGION
Новая область вырезки пуста.SIMPLEREGION
Новый регион вырезки не имеет перекрывающихся границ.
Замечания
Класс CDC
предоставляет пять версий, специализированных для определенных типов объектов GDI, включая ручки, кисти, шрифты, растровые изображения и регионы. Только что выбранный объект заменяет предыдущий объект того же типа. Например, если pObject
общая версия SelectObject
указывает на CPen
объект, функция заменяет текущее перо пером, указанным.pObject
Приложение может выбрать растровое изображение только в контекстах устройства памяти и в один контекст устройства памяти одновременно. Формат растрового изображения должен быть монохромным или совместимым с контекстом устройства; Если это не так, SelectObject
возвращает ошибку.
Для Windows 3.1 и более поздних версий функция возвращает то же значение, SelectObject
которое используется в метафайле или нет. В предыдущих версиях Windows SelectObject
возвращает ненулевое значение для успешного выполнения и 0 для сбоя при использовании в метафайле.
CDC::SelectPalette
Выбирает логическую палитру, указанную pPalette
в качестве выбранного объекта палитры контекста устройства.
CPalette* SelectPalette(
CPalette* pPalette,
BOOL bForceBackground);
Параметры
pPalette
Определяет выбранную логическую палитру. Эта палитра уже должна быть создана с CPalette
помощью функции-члена CreatePalette
.
bForceBackground
Указывает, вынуждена ли логическая палитра быть фоновой палитрой. Если bForceBackground
ненулевое значение, выбранная палитра всегда является фоновой палитрой, независимо от того, имеет ли окно фокус ввода. Если bForceBackground
значение равно 0, а контекст устройства присоединен к окну, логическая палитра — это палитра переднего плана, когда окно имеет фокус ввода.
Возвращаемое значение
Указатель на объект, определяющий CPalette
логическую палитру, замененную палитрой, указанной .pPalette
Это если NULL
возникла ошибка.
Замечания
Новая палитра становится объектом палитры, используемым GDI для управления цветами, отображаемыми в контексте устройства, и заменяет предыдущую палитру.
Приложение может выбрать логическую палитру в несколько контекстов устройства. Однако изменения в логической палитре влияют на все контексты устройства, для которых он выбран. Если приложение выбирает палитру в нескольких контекстах устройства, контексты устройств должны принадлежать одному физическому устройству.
CDC::SelectStockObject
Выбирает объект, соответствующий CGdiObject
одному из предопределенных стандартных перьев, кистей или шрифтов.
virtual CGdiObject* SelectStockObject(int nIndex);
Параметры
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 статических цветов в системной палитре.
Возвращаемое значение
Указатель на CGdiObject
объект, который был заменен, если функция выполнена успешно. Фактический объект, на который указывает, является объектом CPen
, CBrush
или CFont
объектом. Если вызов не выполнен, возвращаемое значение равно NULL.
CDC::SetAbortProc
Устанавливает процедуру прерывания задания печати.
int SetAbortProc(BOOL (CALLBACK* lpfn)(HDC, int));
Параметры
lpfn
Указатель на функцию прерывания для установки в качестве процедуры прерывания. Дополнительные сведения о функции обратного вызова см. в разделе "Функция обратного вызова".CDC::SetAbortProc
Возвращаемое значение
Указывает результат SetAbortProc
функции. Некоторые из следующих значений являются более вероятными, чем другие, но все это возможно.
SP_ERROR
Общая ошибка.SP_OUTOFDISK
Недостаточно места на диске в настоящее время доступно для spooling, и больше места не станет доступным.SP_OUTOFMEMORY
Недостаточно памяти доступно для spooling.SP_USERABORT
Пользователь завершил задание с помощью диспетчера печати.
Замечания
Если приложение должно разрешить отмену задания печати во время 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);
Параметры
nArcDirection
Задает новое направление дуги. Этот параметр может иметь одно из следующих значений:
AD_COUNTERCLOCKWISE
Цифры, нарисованные против часовой стрелки.AD_CLOCKWISE
Рисуется по часовой стрелке.
Возвращаемое значение
Указывает старое направление дуги, если это успешно; в противном случае — 0.
Замечания
Направление по умолчанию — по счетчику. Функция SetArcDirection
указывает направление, в котором выполняются следующие функции:
Arc | Круговая |
---|---|
ArcTo |
Rectangle |
Chord |
RoundRect |
Ellipse |
CDC::SetAttribDC
Вызовите эту функцию, чтобы задать контекст устройства атрибута. m_hAttribDC
virtual void SetAttribDC(HDC hDC);
Параметры
hDC
Контекст устройства Windows.
Замечания
Эта функция-член не присоединяет контекст устройства к объекту CDC
. К объекту подключен CDC
только контекст выходного устройства.
CDC::SetBkColor
Задает текущий цвет фона указанным цветом.
virtual COLORREF SetBkColor(COLORREF crColor);
Параметры
crColor
Задает новый цвет фона.
Возвращаемое значение
Предыдущий цвет фона в качестве значения цвета RGB. Если возникает ошибка, возвращаемое значение 0x80000000.
Замечания
Если фоновый режим имеет значение OPAQUE
, система использует цвет фона для заполнения пробелов в стилях, пробелов между штриховками в кисти и фоном в ячейках символов. Система также использует цвет фона при преобразовании растровых изображений между контекстами цветов и монохромных устройств.
Если устройство не может отобразить указанный цвет, система задает цвет фона ближайшим физическим цветом.
CDC::SetBkMode
Задает фоновый режим.
int SetBkMode(int nBkMode);
Параметры
nBkMode
Указывает режим, который нужно задать. Этот параметр может иметь одно из следующих значений:
OPAQUE
Фон заполняется текущим цветом фона перед текстом, штриховкой кистью или пером. Это фоновый режим по умолчанию.TRANSPARENT
Фон не изменяется до рисования.
Возвращаемое значение
Предыдущий фоновый режим.
Замечания
В фоновом режиме определяется, удаляет ли система существующие цвета фона на поверхности рисования перед рисованием текста, штриховками или любым стилем пера, который не является сплошной линией.
Пример
Пример см. в примере CWnd::OnCtlColor
.
CDC::SetBoundsRect
Управляет накоплением ограничивающих прямоугольников для указанного контекста устройства.
UINT SetBoundsRect(
LPCRECT lpRectBounds,
UINT flags);
Параметры
lpRectBounds
Указывает на структуру RECT
или CRect
объект, который используется для задания ограничивающего прямоугольника. Измерения прямоугольника задаются в логических координатах. Этот параметр может иметь значение NULL
.
flags
Указывает, как будет сочетаться новый прямоугольник с накопленным прямоугольником. Этот параметр может быть сочетанием следующих значений:
DCB_ACCUMULATE
Добавьте прямоугольник, заданный ограничивающимlpRectBounds
прямоугольником (с помощью операции прямоугольника-объединения).DCB_DISABLE
Отключите накопление границ.DCB_ENABLE
Включите накопление границ. (Параметр по умолчанию для накопления границ отключен.)
Возвращаемое значение
Текущее состояние ограничивающего прямоугольника, если функция выполнена успешно. Например flags
, возвращаемое значение может быть сочетанием значений DCB_
:
DCB_ACCUMULATE
Ограничивающий прямоугольник не пуст. Это значение всегда будет задано.DCB_DISABLE
Отключается накопление границ.DCB_ENABLE
Накопление границ включено.
Замечания
Windows может поддерживать ограничивающий прямоугольник для всех операций рисования. Этот прямоугольник можно запрашивать и сбрасывать приложением. Границы рисования полезны для недопустимых кэшей растровых изображений.
CDC::SetBrushOrg
Указывает источник, который GDI назначит следующей кисти, которую приложение выбирает в контексте устройства.
CPoint SetBrushOrg(
int x,
int y);
CPoint SetBrushOrg(POINT point);
Параметры
x
Задает координату x (в единицах устройства) нового источника. Это значение должно находиться в диапазоне 0–7.
y
Задает координату y (в единицах устройства) нового источника. Это значение должно находиться в диапазоне 0–7.
point
Задает координаты x-и y нового источника. Каждое значение должно находиться в диапазоне от 0 до 7. Для этого параметра можно передать структуру POINT
CPoint
или объект.
Возвращаемое значение
Предыдущий источник кисти в единицах устройства.
Замечания
Координаты по умолчанию для источника кисти :0, 0). Чтобы изменить источник кисти, вызовите UnrealizeObject
функцию для CBrush
объекта, вызовите SetBrushOrg
и вызовите SelectObject
функцию-член, чтобы выбрать кисть в контексте устройства.
Не используйте SetBrushOrg
с объектами акций CBrush
.
CDC::SetColorAdjustment
Задает значения корректировки цвета для контекста устройства с помощью указанных значений.
BOOL SetColorAdjustment(const COLORADJUSTMENT* lpColorAdjust);
Параметры
lpColorAdjust
Указывает на структуру COLORADJUSTMENT
данных, содержащую значения корректировки цвета.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Значения корректировки цвета используются для настройки входного цвета исходного растрового изображения для вызовов CDC::StretchBlt
функции-члена при HALFTONE
установке режима.
CDC::SetDCBrushColor
Задает текущий цвет кисти контекста устройства (DC) указанным значением цвета.
COLORREF SetDCBrushColor(COLORREF crColor);
Параметры
crColor
Задает новый цвет кисти.
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение указывает предыдущий цвет кисти контроллера домена в качестве COLORREF
значения.
Если функция завершается ошибкой, возвращается CLR_INVALID
значение.
Замечания
Этот метод эмулирует функциональные возможности функции функции SetDCBrushColor
, как описано в пакете SDK для Windows.
CDC::SetDCPenColor
Задает текущий цвет пера (DC) для заданного значения цвета.
COLORREF SetDCPenColor(COLORREF crColor);
Параметры
crColor
Задает новый цвет пера.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Эта функция-член использует функцию SetDCPenColor
Win32, как описано в пакете SDK для Windows.
CDC::SetGraphicsMode
Задает графический режим для указанного контекста устройства.
int SetGraphicsMode(int iMode);
Параметры
iMode
Задает графический режим. Список значений, которые может принимать этот параметр, см. в разделе SetGraphicsMode
.
Возвращаемое значение
Возвращает старый графический режим при успешном выполнении.
Возвращает значение 0 при сбое. Чтобы получить расширенные сведения об ошибке, вызовите функцию GetLastError
.
Замечания
Этот метод упаковывает функцию SetGraphicsMode
GDI Windows.
CDC::SetLayout
Вызовите эту функцию-член, чтобы изменить макет текста и графики для контекста устройства справа налево, стандартный макет для таких культур, как арабский и иврит.
DWORD SetLayout(DWORD dwLayout);
Параметры
dwLayout
Макет контекста устройства и флаги элемента управления растровым изображением. Это может быть сочетание следующих значений.
Значение | Значение |
---|---|
LAYOUT_BITMAPORIENTATIONPRESERVED |
Отключает любое отражение для вызовов CDC::BitBlt и CDC::StretchBlt . |
LAYOUT_RTL |
Задает горизонтальный макет по умолчанию справа налево. |
LAYOUT_LTR |
Задает макет по умолчанию слева направо. |
Возвращаемое значение
При успешном выполнении предыдущего макета контекста устройства.
В случае неудачи GDI_ERROR
. Чтобы получить расширенные сведения об ошибке, вызовите функцию GetLastError
.
Замечания
Как правило, вы не вызовете SetLayout
окно. Вместо этого вы управляете макетом справа налево в окне, задав расширенные стили окон, WS_EX_RTLREADING
например. Контекст устройства, например принтер или метафайл, не наследует этот макет. Единственным способом задать контекст устройства для макета справа налево является вызов SetLayout
.
При вызове SetLayout(LAYOUT_RTL)
SetLayout
автоматически измените режим MM_ISOTROPIC
сопоставления на . В результате последующий вызов GetMapMode
возвращается MM_ISOTROPIC
вместо MM_TEXT
.
В некоторых случаях, например с большим количеством растровых изображений, может потребоваться сохранить макет слева направо. В таких случаях отрисовка изображения путем вызова BitBlt
или StretchBlt
задания флага элемента управления растровым изображениемLAYOUT_BITMAPORIENTATIONPRESERVED
.dwLayout
После изменения макета с флагом LAYOUT_RTL
флаги флаги обычно указываются вправо или влево. Чтобы избежать путаницы, может потребоваться определить альтернативные имена стандартных флагов. Список предлагаемых альтернативных имен флагов см SetLayout
. в пакете SDK для Windows.
CDC::SetMapMode
Задает режим сопоставления.
virtual int SetMapMode(int nMapMode);
Параметры
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.SetWindowExt
SetViewportExt
Используйте функции-члены, чтобы указать нужные единицы и ориентацию осей. 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 вверх.
Возвращаемое значение
Предыдущий режим сопоставления.
Замечания
В режиме сопоставления определяется единица измерения, используемая для преобразования логических единиц в единицы устройства; Он также определяет ориентацию x-и y-осей устройства. GDI использует режим сопоставления для преобразования логических координат в соответствующие координаты устройства. Режим MM_TEXT
позволяет приложениям работать в пикселях устройства, где 1 единица равна 1 пикселям. Физический размер пикселя зависит от устройства к устройству.
Режимы MM_HIENGLISH
, MM_HIMETRIC
, и MM_LOENGLISH
MM_LOMETRIC
MM_TWIPS
режимы полезны для приложений, которые должны рисовать в физически значимых единицах (например, дюймах или миллиметрах). Режим MM_ISOTROPIC
обеспечивает соотношение пропорций 1:1, которое полезно, если важно сохранить точную форму изображения. Режим MM_ANISOTROPIC
позволяет независимо настраивать координаты x и y.
Примечание.
При вызове SetLayout
изменения контроллера домена (контекст устройства) на правый на левый макет SetLayout
автоматически изменяет режим MM_ISOTROPIC
сопоставления.
Пример
Пример см. в примере CView::OnPrepareDC
.
CDC::SetMapperFlags
Изменяет метод, используемый картой шрифта при преобразовании логического шрифта в физический шрифт.
DWORD SetMapperFlags(DWORD dwFlag);
Параметры
dwFlag
Указывает, пытается ли карта шрифта соответствовать высоте и ширине шрифта устройству. Если это значение равно ASPECT_FILTERING
, средство сопоставления выбирает только шрифты, чей x-аспект и y-аспект точно совпадают с шрифтами указанного устройства.
Возвращаемое значение
Предыдущее значение флага сопоставления шрифтов.
Замечания
Приложение может использовать SetMapperFlags
для того, чтобы средство сопоставления шрифтов пыталось выбрать только физический шрифт, который точно соответствует пропорции указанного устройства.
Приложение, использующее только растровые шрифты, может использовать SetMapperFlags
функцию, чтобы убедиться, что шрифт, выбранный картой шрифта, является привлекательным и читаемым на указанном устройстве. Приложения, использующие масштабируемые шрифты (TrueType), обычно не используются SetMapperFlags
.
Если физический шрифт не имеет пропорций, соответствующий спецификации в логическом шрифте, GDI выбирает новое соотношение аспектов и выбирает шрифт, соответствующий этому новому пропорции.
CDC::SetMiterLimit
Задает ограничение длины соединений miter для контекста устройства.
BOOL SetMiterLimit(float fMiterLimit);
Параметры
fMiterLimit
Задает новое ограничение miter для контекста устройства.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Длина мизера определяется как расстояние от пересечения стен линии внутри соединения к пересечению стен линии на стороне соединения. Ограничение митера — это максимально допустимое соотношение длины мизера к ширине линии. Значение по умолчанию — 10,0.
CDC::SetOutputDC
Вызовите эту функцию-член, чтобы задать контекст выходного устройства. m_hDC
virtual void SetOutputDC(HDC hDC);
Параметры
hDC
Контекст устройства Windows.
Замечания
Эта функция-член может вызываться только в том случае, если контекст устройства не был подключен к объекту CDC
. Эта функция-член задает m_hDC
, но не присоединяет контекст устройства к объекту CDC
.
CDC::SetPixel
Задает пиксель в точке, указанной в ближайшем приближении цвета, указанного crColor
в .
COLORREF SetPixel(
int x,
int y,
COLORREF crColor);
COLORREF SetPixel(
POINT point,
COLORREF crColor);
Параметры
x
Указывает логическую координату x для заданной точки.
y
Указывает логическую координату точки, заданной.
crColor
COLORREF
Значение RGB, указывающее цвет, используемый для рисования точки. Сведения об этом значении см COLORREF
. в пакете SDK для Windows.
point
Указывает логические координаты x-и y для заданной точки. Для этого параметра можно передать структуру POINT
CPoint
или объект.
Возвращаемое значение
Значение RGB для цвета, нарисованного точкой. Это значение может отличаться от указанного, если crColor
используется приближение этого цвета. Если функция завершается ошибкой (если точка находится за пределами области вырезки), возвращаемое значение равно -1.
Замечания
Точка должна находиться в регионе вырезки. Если точка не в регионе вырезки, функция ничего не делает.
Не все устройства поддерживают функцию SetPixel
. Чтобы определить, поддерживает SetPixel
ли устройство, вызовите GetDeviceCaps
функцию-член с индексом RASTERCAPS
и проверьте возвращаемое значение флага RC_BITBLT
.
CDC::SetPixelV
Задает пиксель в указанных координатах ближайшим приближением указанного цвета.
BOOL SetPixelV(
int x,
int y,
COLORREF crColor);
BOOL SetPixelV(
POINT point,
COLORREF crColor);
Параметры
x
Указывает координату x в логических единицах заданной точки.
y
Задает координату y в логических единицах заданной точки.
crColor
Указывает цвет, используемый для рисования точки.
point
Указывает логические координаты x-и y для заданной точки. Можно передать структуру POINT
данных или CPoint
объект для этого параметра.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Точка должна находиться как в области вырезки, так и в видимой части поверхности устройства. Не все устройства поддерживают функцию-член. Дополнительные сведения см RC_BITBLT
. в функции-члене CDC::GetDeviceCaps
. SetPixelV
быстрее, чем SetPixel
из-за того, что он не должен возвращать значение цвета окрашенной точки.
CDC::SetPolyFillMode
Задает режим многоугольника.
int SetPolyFillMode(int nPolyFillMode);
Параметры
nPolyFillMode
Задает новый режим заполнения. Это значение может быть либо ALTERNATE
либо WINDING
. Задан режим по умолчанию в Windows ALTERNATE
.
Возвращаемое значение
Предыдущий режим заполнения, если выполнен успешно; в противном случае — 0.
Замечания
Если режим ALTERNATE
многоугольника заполнен, система заполняет область между нечетной и четной стороной многоугольника на каждой линии сканирования. То есть система заполняет область между первой и второй стороной, между третьей и четвертой стороной и т. д. Это режим по умолчанию.
При заполнении многоугольника WINDING
система использует направление, в котором рисуется фигура, чтобы определить, следует ли заполнить область. Каждый сегмент линии в многоугольнике рисуется либо по часовой стрелке, либо в направлении счетчика. Всякий раз, когда мнимая линия, рисуемая из заключаемой области к внешней части фигуры, проходит через сегмент по часовой стрелке, число увеличивается. Когда линия проходит через сегмент линии счетчика с часовой стрелкой, количество уменьшается. Область заполняется, если число ненулевое, когда линия достигает за пределами фигуры.
CDC::SetROP2
Задает текущий режим рисования.
int SetROP2(int nDrawMode);
Параметры
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
(окончательный пиксель =~
(пиксель пера^
)).
Возвращаемое значение
Предыдущий режим рисования.
Это может быть любое из значений, заданных в пакете SDK для Windows.
Замечания
Режим рисования указывает, как цвета пера и интерьер заполненных объектов объединяются с цветом, уже на поверхности отображения.
Режим рисования предназначен только для растровых устройств; Он не применяется к векторным устройствам. Режимы рисования — это двоичные коды операций растра, представляющие все возможные логические сочетания двух переменных, используя двоичные операторы&
, |
и (монопольные|
), а также ^
унарную операцию~
.
CDC::SetStretchBltMode
Задает режим растягивания растровых изображений для StretchBlt
функции-члена.
int SetStretchBltMode(int nStretchMode);
Параметры
nStretchMode
Задает режим растяжения. В качестве такой точки может выступать любой из следующих вариантов:
значение | Описание |
---|---|
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 |
Выполняет логическое | действие с использованием значений цвета для исключенных и существующих пикселей. Если растровое изображение является монохромным растровым изображением, этот режим сохраняет белые пиксели за счет черных пикселей. |
Возвращаемое значение
Предыдущий режим растяжения. Он может иметь значение STRETCH_ANDSCANS
, STRETCH_DELETESCANS
или STRETCH_ORSCANS
.
Замечания
Режим растягивания растровых карт определяет, как данные удаляются из растровых изображений, сжатых с помощью функции.
Режимы BLACKONWHITE
(STRETCH_ANDSCANS
) и WHITEONBLACK
(STRETCH_ORSCANS
) обычно используются для сохранения пикселей переднего плана в монохромных растровых изображениях. Режим COLORONCOLOR
(STRETCH_DELETESCANS
) обычно используется для сохранения цвета в растровых изображениях цвета.
В режиме требуется больше обработки исходного изображения, чем другие три режима. Это HALFTONE
медленнее, чем другие, но создает более качественные изображения. Кроме того, SetBrushOrgEx
необходимо вызвать после настройки HALFTONE
режима, чтобы избежать несоответствия кисти.
Более растянутые режимы также могут быть доступны в зависимости от возможностей драйвера устройства.
CDC::SetTextAlign
Задает флаги выравнивания текста.
UINT SetTextAlign(UINT nFlags);
Параметры
nFlags
Задает флаги выравнивания текста. Флаги указывают связь между точкой и прямоугольником, ограничивающим текст. Точка может быть либо текущей позицией, либо координатами, указанными функцией вывода текста. Прямоугольник, ограничивающий текст, определяется смежными ячейками символов в текстовой строке. Параметр nFlags
может быть одним или несколькими флагами из следующих трех категорий. Выберите только один флаг из каждой категории. Первая категория влияет на выравнивание текста в направлении x:
TA_CENTER
Выравнивание точки с горизонтальным центром ограничивающего прямоугольника.TA_LEFT
Выравнивание точки с левой стороны ограничивающего прямоугольника. Этот параметр принимается по умолчанию.TA_RIGHT
Выравнивание точки с правой стороны ограничивающего прямоугольника.
Вторая категория влияет на выравнивание текста в направлении y:
TA_BASELINE
Выравнивание точки с базовой линией выбранного шрифта.TA_BOTTOM
Выравнивает точку с нижней частью ограничивающего прямоугольника.TA_TOP
Выравнивает точку с верхней частью ограничивающего прямоугольника. Этот параметр принимается по умолчанию.
Третья категория определяет, обновляется ли текущая позиция при написании текста:
TA_NOUPDATECP
Не обновляет текущую позицию после каждого вызова функции вывода текста. Этот параметр принимается по умолчанию.TA_UPDATECP
Обновляет текущую позицию x после каждого вызова функции вывода текста. Новая позиция находится в правой части ограничивающего прямоугольника для текста. При установке этого флага координаты, указанные в вызовахTextOut
функции-члена, игнорируются.
Возвращаемое значение
Предыдущий параметр выравнивания текста при успешном выполнении. Байт низкого порядка содержит горизонтальный параметр, а байт высокого порядка содержит вертикальный параметр; в противном случае — 0.
Замечания
ExtTextOut
Функции-члены TextOut
используют эти флаги при расположении строки текста на дисплее или устройстве. Флаги указывают связь между определенной точкой и прямоугольником, ограничивающим текст. Координаты этой точки передаются в качестве параметров TextOut
функции-члена. Прямоугольник, ограничивающий текст, формируется смежными ячейками символов в текстовой строке.
CDC::SetTextCharacterExtra
Задает количество интервалов между диаграммами.
int SetTextCharacterExtra(int nCharExtra);
Параметры
nCharExtra
Указывает объем дополнительного пространства (в логических единицах), добавляемого к каждому символу. Если текущий режим сопоставления не MM_TEXT
задан, nCharExtra
преобразуется и округляется до ближайшего пикселя.
Возвращаемое значение
Объем предыдущего интервала между диаграммами.
Замечания
GDI добавляет этот интервал к каждому символу, включая символы останова, при записи строки текста в контекст устройства. Значение по умолчанию для интервала между диаграммами равно 0.
CDC::SetTextColor
Задает цвет текста указанным цветом.
virtual COLORREF SetTextColor(COLORREF crColor);
Параметры
crColor
Задает цвет текста в виде значения цвета RGB.
Возвращаемое значение
Значение RGB для предыдущего цвета текста.
Замечания
Система использует этот цвет текста при написании текста в контексте устройства, а также при преобразовании растровых изображений между контекстами устройства цвета и монохромного устройства.
Если устройство не может представлять указанный цвет, система задает цвет текста ближайшим физическим цветом. Цвет фона для символа определяется функциями-членами SetBkColor
и SetBkMode
функциями-членами.
Пример
Пример см. в примере CWnd::OnCtlColor
.
CDC::SetTextJustification
Добавляет пробел в символы останова в строке.
int SetTextJustification(
int nBreakExtra,
int nBreakCount);
Параметры
nBreakExtra
Указывает общее дополнительное пространство для добавления в строку текста (в логических единицах). Если текущий режим сопоставления не MM_TEXT
является, значение, заданное этим параметром, преобразуется в текущий режим сопоставления и округляется до ближайшей единицы устройства.
nBreakCount
Указывает количество символов останова в строке.
Возвращаемое значение
Если функция выполнена успешно; в противном случае — 0.
Замечания
Приложение может использовать GetTextMetrics
функции-члены для получения символа разрыва шрифта.
SetTextJustification
После вызова функции-члена вызов функции вывода текста (напримерTextOut
) распределяет указанное дополнительное пространство равномерно между указанным числом символов разрыва. Символ разрыва обычно является символом пробела (ASCII 32), но может быть определен шрифтом как другим символом.
Функция-член GetTextExtent
обычно используется с SetTextJustification
. GetTextExtent
вычисляет ширину заданной строки перед выравниванием. Приложение может определить, сколько места нужно указать в nBreakExtra
параметре, вычитая значение, возвращаемое GetTextExtent
из ширины строки после выравнивания.
Функцию SetTextJustification
можно использовать для выравнивания строки, содержащей несколько запусков в разных шрифтах. В этом случае строка должна быть создана по фрагменту путем выравнивания и записи каждого запуска отдельно.
Так как ошибки округления могут возникать во время выравнивания, система сохраняет запущенный термин ошибки, определяющий текущую ошибку. При выравнивании строки, содержащей несколько запусков, GetTextExtent
автоматически использует этот термин ошибки при вычислении степени следующего запуска. Это позволяет функции вывода текста смешать ошибку в новом запуске.
После выравнивания каждой строки этот термин ошибки должен быть очищен, чтобы предотвратить его включение в следующую строку. Термин можно очистить, вызвав SetTextJustification
nBreakExtra
значение 0.
CDC::SetViewportExt
Задает x-и y-экстенты окна просмотра контекста устройства.
virtual CSize SetViewportExt(
int cx,
int cy);
CSize SetViewportExt(SIZE size);
Параметры
cx
Указывает x-экстент окна просмотра (в единицах устройства).
cy
Указывает y-экстент окна просмотра (в единицах устройства).
size
Указывает x-и y-экстенты окна просмотра (в единицах устройства).
Возвращаемое значение
Предыдущие экстенты окна просмотра в качестве CSize
объекта. При возникновении ошибки координаты x-и y возвращаемого CSize
объекта имеют значение 0.
Замечания
Окно просмотра вместе с окном контекста устройства определяет, как GDI сопоставляет точки в логической системе координат с точками в системе координат фактического устройства. Другими словами, они определяют, как GDI преобразует логические координаты в координаты устройства.
Если заданы следующие режимы сопоставления, вызовы SetWindowExt
и SetViewportExt
игнорируются:
MM_HIENGLISH |
MM_LOMETRIC |
---|---|
MM_HIMETRIC |
MM_TEXT |
MM_LOENGLISH |
MM_TWIPS |
При MM_ISOTROPIC
установке режима приложение должно вызывать функцию-член перед вызовом SetWindowExt
SetViewportExt
.
Пример
Пример см. в примере CView::OnPrepareDC
.
CDC::SetViewportOrg
Задает источник окна просмотра контекста устройства.
virtual CPoint SetViewportOrg(
int x,
int y);
CPoint SetViewportOrg(POINT point);
Параметры
x
Указывает координату x (в единицах устройства) источника окна просмотра. Значение должно находиться в диапазоне системы координат устройства.
y
Указывает координату y (в единицах устройства) источника окна просмотра. Значение должно находиться в диапазоне системы координат устройства.
point
Указывает источник окна просмотра. Значения должны находиться в диапазоне системы координат устройства. Для этого параметра можно передать структуру POINT
CPoint
или объект.
Возвращаемое значение
Предыдущий источник окна просмотра (в координатах устройства) в качестве CPoint
объекта.
Замечания
Окно просмотра вместе с окном контекста устройства определяет, как GDI сопоставляет точки в логической системе координат с точками в системе координат фактического устройства. Другими словами, они определяют, как GDI преобразует логические координаты в координаты устройства.
Источник окна просмотра отмечает точку в системе координат устройства, с которой GDI сопоставляет источник окна, точку в логической системе координат, указанной SetWindowOrg
функцией-членом. GDI сопоставляет все остальные точки, выполнив тот же процесс, необходимый для сопоставления источника окна с источником окна. Например, все точки в круге вокруг точки в источнике окна будут находиться в круге вокруг точки в источнике представления. Аналогичным образом все точки в строке, которая проходит через источник окна, будет находиться в строке, которая проходит через источник окна просмотра.
Пример
Пример см. в примере CView::OnPrepareDC
.
CDC::SetWindowExt
Задает x-и y-экстенты окна, связанного с контекстом устройства.
virtual CSize SetWindowExt(
int cx,
int cy);
CSize SetWindowExt(SIZE size);
Параметры
cx
Указывает степень x (в логических единицах) окна.
cy
Указывает степень y (в логических единицах) окна.
size
Задает экстенты x и y (в логических единицах) окна.
Возвращаемое значение
Предыдущие экстенты окна (в логических единицах) в качестве CSize
объекта. Если возникает ошибка, координаты x-и y возвращаемого CSize
объекта имеют значение 0.
Замечания
Окно вместе с окном представления контекста устройства определяет, как GDI сопоставляет точки в логической системе координат с точками в системе координат устройства.
Если заданы следующие режимы сопоставления, вызовы SetWindowExt
и SetViewportExt
функции игнорируются:
MM_HIENGLISH
MM_HIMETRIC
MM_LOENGLISH
MM_LOMETRIC
MM_TEXT
MM_TWIPS
При MM_ISOTROPIC
установке режима приложение должно вызвать функцию-член перед вызовом SetWindowExt
SetViewportExt
.
Пример
Пример см. в примере CView::OnPrepareDC
.
CDC::SetWindowOrg
Задает источник окна контекста устройства.
CPoint SetWindowOrg(
int x,
int y);
CPoint SetWindowOrg(POINT point);
Параметры
x
Задает логическую координату x нового источника окна.
y
Задает логическую координату y нового источника окна.
point
Задает логические координаты нового источника окна. Для этого параметра можно передать структуру POINT
CPoint
или объект.
Возвращаемое значение
Предыдущий источник окна в качестве CPoint
объекта.
Замечания
Окно вместе с окном представления контекста устройства определяет, как GDI сопоставляет точки в логической системе координат с точками в системе координат устройства.
Источник окна помечает точку в системе логических координат, из которой GDI сопоставляет источник окна просмотра, точку в системе координат устройства, указанной SetWindowOrg
функцией. GDI сопоставляет все остальные точки, выполнив тот же процесс, необходимый для сопоставления источника окна с источником окна. Например, все точки в круге вокруг точки в источнике окна будут находиться в круге вокруг точки в источнике представления. Аналогичным образом все точки в строке, которая проходит через источник окна, будет находиться в строке, которая проходит через источник окна просмотра.
CDC::SetWorldTransform
Задает двухмерное линейное преобразование между пространством мира и пространством страниц для указанного контекста устройства. Это преобразование можно использовать для масштабирования, поворота, стрижения или преобразования выходных данных графики.
BOOL SetWorldTransform(const XFORM& rXform);
Параметры
rXform
Ссылка на структуру XFORM
, содержащую данные преобразования.
Возвращаемое значение
Возвращает ненулевое значение при успешном выполнении.
Возвращает значение 0 при сбое.
Чтобы получить расширенные сведения об ошибке, вызовите функцию GetLastError
.
Замечания
Этот метод упаковывает функцию SetWorldTransform
GDI Windows.
CDC::StartDoc
Сообщает драйверу устройства о запуске нового задания печати и о том, что все последующие StartPage
вызовы EndPage
должны быть сплочены в одном задании до тех пор, пока EndDoc
не возникнет вызов.
int StartDoc(LPDOCINFO lpDocInfo);
int StartDoc(LPCTSTR lpszDocName);
Параметры
lpDocInfo
Указывает на DOCINFO
структуру, содержащую имя файла документа и имя выходного файла.
lpszDocName
Указатель на строку, содержащую имя файла документа.
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение больше нуля. Это значение является идентификатором задания печати для документа.
Если функция завершается ошибкой, возвращаемое значение меньше нуля или равно нулю.
Замечания
Это гарантирует, что документы, длиннее одной страницы, не будут перемежаться с другими заданиями.
Для Windows версии 3.1 и более поздних версий эта функция заменяет STARTDOC
экран-экран принтера. Использование этой функции гарантирует, что документы, содержащие несколько страниц, не перемежаются с другими заданиями печати.
StartDoc
не следует использовать внутри метафайлов.
Пример
Этот фрагмент кода получает принтер по умолчанию, открывает задание печати и спулает одну страницу с "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();
Возвращаемое значение
Больше или равно 0, если функция выполнена успешно, или отрицательное значение, если произошла ошибка.
Замечания
StartPage
NEWFRAME
заменяет и BANDINFO
бежит.
Общие сведения о последовательности вызовов печати см. в функции-члене StartDoc
.
Система отключает ResetDC
функцию-член между вызовами StartPage
и EndPage
.
Пример
Пример см. в примере 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);
Параметры
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
Преобразует весь выходной белый цвет.
Возвращаемое значение
Ненулевое значение, если точечный рисунок рисуется, в противном случае — 0.
Замечания
Эта функция использует режим растягивания контекста устройства назначения (задается SetStretchBltMode
), чтобы определить, как необходимо растянуть или сжать точечный рисунок.
Функция StretchBlt
перемещает растровое изображение с исходного устройства, заданного pSrcDC
на целевое устройство, представленное объектом контекста устройства, который вызывается функцией-член. Параметры xSrc
ySrc
nSrcWidth
, и параметры определяют верхний левый угол и nSrcHeight
размеры исходного прямоугольника. Значения x
, y
nWidth
и nHeight
параметры дают верхний левый угол и размеры прямоугольника назначения. Операция растра, указанная с помощью dwRop
определения того, как исходный растровый рисунок и биты уже объединяются на целевом устройстве.
Функция StretchBlt
создает зеркальное изображение растрового изображения, если признаки nSrcWidth
и nWidth
nSrcHeight
nHeight
параметры отличаются. Если nSrcWidth
и nWidth
имеют разные знаки, функция создает зеркальное изображение растрового изображения вдоль оси x. Если nSrcHeight
и nHeight
имеют разные знаки, функция создает зеркальное изображение растрового изображения вдоль оси Y.
Функция StretchBlt
растягивает или сжимает исходный точечный рисунок, а затем копирует результат в место назначения. Если шаблон должен быть объединен с результатом, он не будет объединен до тех пор, пока растягиваемое исходное растровое изображение будет скопировано в место назначения. Если используется кисть, это выбранная кисть в контексте целевого устройства. Координаты назначения преобразуются в зависимости от контекста устройства назначения; исходные координаты преобразуются в зависимости от контекста исходного устройства.
Если целевые, исходные и шаблонные растровые изображения не имеют одного и того же формата цвета, StretchBlt
преобразовывает исходные и шаблонные растровые изображения в соответствии с целевыми растровыми изображениями. В преобразовании используются цвета переднего плана и фона контекста устройства назначения.
Если StretchBlt
необходимо преобразовать монохромный точечный рисунок в цвет, белые биты (1) задаются в качестве значения цвета фона, а черные биты (0) — в качестве цвета переднего плана. Для преобразования цветов в монохромный режим определяются пиксели, сопоставляющие цвет фона белому (1), а все остальные пиксели становятся черными (0). Используются цвета переднего плана и фона контекста устройства назначения с цветом.
Не все устройства поддерживают функцию StretchBlt
. Чтобы определить, поддерживает StretchBlt
ли устройство, вызовите GetDeviceCaps
функцию-член с индексом RASTERCAPS
и проверьте возвращаемое значение флага RC_STRETCHBLT
.
CDC::StrokeAndFillPath
Закрывает все открытые фигуры в пути, перечеркивает контур пути с помощью текущего пера и заполняет его интерьер с помощью текущей кисти.
BOOL StrokeAndFillPath();
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Контекст устройства должен содержать закрытый путь. StrokeAndFillPath
Функция-член имеет тот же эффект, что и закрытие всех открытых фигур в пути, а также поглаживание и заполнение пути отдельно, за исключением того, что заполненная область не перекрывает почеркнутую область, даже если перо широкое.
CDC::StrokePath
Отрисовывает указанный путь с помощью текущего пера.
BOOL StrokePath();
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Контекст устройства должен содержать закрытый путь.
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);
Параметры
x
Задает логическую координату x начальной точки строки.
y
Задает логическую координату y начальной точки строки.
lpszString
Указывает на строку символа для рисования. Можно передать указатель на массив символов или CString
объект для этого параметра.
nCount
Указывает длину строки , на которую указывает lpszString
.
nTabPositions
Указывает количество значений в массиве позиций табуляции стоп.
lpnTabStopPositions
Указывает на массив, содержащий позиции табуляции (в логических единицах). Остановки табуляции должны быть отсортированы по возрастанию порядка; Наименьшее x-значение должно быть первым элементом в массиве.
nTabOrigin
Задает координату x начальной позиции, из которой развернуты вкладки (в логических единицах).
str
CString
Объект, содержащий указанные символы.
Возвращаемое значение
Размеры строки (в логических единицах) в качестве CSize
объекта.
Замечания
Текст записывается в выбранном в данный момент шрифте. Если nTabPositions
значение равно 0 и lpnTabStopPositions
NULL
имеет значение, вкладки расширяются до восьми раз средней ширины символов.
Если 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);
Параметры
x
Указывает логическую координату X начальной точки текста.
y
Указывает логическую координату Y начальной точки текста.
lpszString
Указывает на строку символов, которую необходимо нарисовать.
nCount
Указывает количество знаков в строке.
str
Объект CString
, который содержит символы, которые необходимо нарисовать.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Начальные координаты символа в левом верхнем углу ячейки символов. По умолчанию текущая позиция не используется или обновляется функцией.
Если приложению необходимо обновить текущую позицию при вызове TextOut
, приложение может вызвать SetTextAlign
функцию-член с заданным nFlags
значением TA_UPDATECP
. Если этот флаг задан, Windows игнорирует x
и y
параметры при последующих вызовах TextOut
, используя текущую позицию.
Пример
Пример см. в примере 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);
Параметры
xDest
Задает координату x в логических единицах верхнего левого угла прямоугольника назначения.
yDest
Задает координату y в логических единицах верхнего левого угла прямоугольника назначения.
nDestWidth
Задает ширину в логических единицах целевого прямоугольника.
nDestHeight
Задает высоту в логических единицах прямоугольника назначения.
pSrcDC
Указатель на контекст исходного устройства.
xSrc
Задает координату x в логических единицах исходного прямоугольника.
ySrc
Задает координату y в логических единицах исходного прямоугольника.
nSrcWidth
Задает ширину в логических единицах исходного прямоугольника.
nSrcHeight
Задает высоту в логических единицах исходного прямоугольника.
clrTransparent
Цвет RGB в исходном растровом рисунке, который будет рассматриваться как прозрачный.
Возвращаемое значение
Значение TRUE
в случае успешного выполнения; в противном случае — значение FALSE
.
Замечания
TransparentBlt
обеспечивает прозрачность; т. е. цвет RGB, указанный clrTransparent
отрисовывается прозрачным для передачи.
Дополнительные сведения см TransparentBlt
. в пакете SDK для Windows.
CDC::UpdateColors
Обновляет клиентская область контекста устройства, сопоставляя текущие цвета в клиентской области с системной палитрой на основе пикселей по пикселям.
void UpdateColors();
Замечания
Неактивное окно с реализованной логической палитрой может вызываться UpdateColors
как альтернатива перерисовке клиентской области при изменении системной палитры.
Дополнительные сведения об использовании цветовой палитры см UpdateColors
. в пакете SDK для Windows.
Функция-член UpdateColors
обычно обновляет клиентская область быстрее, чем перерисовка области. Однако, поскольку функция выполняет преобразование цветов на основе цвета каждого пикселя до изменения системной палитры, каждый вызов этой функции приводит к потере некоторой точности цвета.
CDC::WidenPath
Переопределяет текущий путь в качестве области, которая будет окрашена, если путь был обрисован с помощью пера, выбранного в данный момент в контексте устройства.
BOOL WidenPath();
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Эта функция выполняется успешно, только если текущее перо является геометрическим пером, созданным второй версией функции-члена, или если перо создается с первой версией CreatePen
CreatePen
и имеет ширину в единицах устройства больше 1. Контекст устройства должен содержать закрытый путь. Любые кривые Bzier в пути преобразуются в последовательности прямых линий, приблизиющих расширенные кривые. Таким образом, кривые Bzier остаются в пути после WidenPath
вызова.
См. также
CObject
Класс
Диаграмма иерархии
CPaintDC
Класс
CWindowDC
Класс
CClientDC
Класс
CMetaFileDC
Класс