Базовый класс для всех классов обеспечивающих интерфейс с графическими объектами windows это

Обновлено: 03.07.2024

Весь вывод в системе Windows реализован на принципе унификации работы с такими физически различными устройствами, как экран дисплея, принтеры, плоттеры, и.т.п. Для всех этих устройств приложение использует одни и те же функции и, в общем случае, может «не задумываться» над тем, куда будет выведена строка текста или какой-либо графический объект. Система сама распознает устройство ввода и активизирует соответствующий драйвер. Такой подход, с одной стороны, обеспечивает универсальность процесса графического вывода, а с другой – позволяет, например, создавать платы графических акселераторов, которые самостоятельно, без использования центрального процессора осуществляют преобразования команд рисования, существенно разгружая тем самым всю систему в целом.

Для реализации такого подхода в Windows предусмотрен специальный объект, называемый контекстом устройства. Именно он хранит необходимую информацию как об устройстве вывода, так и о параметрах соответственно рисования. Физически весь вывод происходит, естественно, на конкретное устройство, представленное в системе контекстом, описываемым, в свою очередь, дескриптором. Последний используют (в качестве параметра) все функции графического вывода Win32 API, т.е. при этом задействуется объект «контекст устройства», до чего MFC-приложению нет никакого дела – оно работает с объектами классов библиотеки MFC, что существенно удобнее и надежнее.

CDC – базовый класс для всех классов, инкапсулирующих контексты устройств Windows. Объекты этого класса используются для работы со всем экраном дисплея или с таким устройством, как принтер.

CClientDC – объекты этого класса обеспечивают доступ к клиентской части окна. Используется для графического вывода в любой функции. При создании объекта класса CClientDC в конструкторе вызывается функция Win32 API GetDC, а при разрушении, в деструкторе – ReleaseDC, также из Win32 API, обеспечивая необходимые операции для подготовки и завершения процесса графического вывода именно и только в клиентскую часть окна. За создание объекта класса CClientDC отвечает разработчик приложения.

Классы для работы с файлами

Класс CFile

Класс CFile предназначен для обеспечения работы с файлами. Он позволяет упростить использование файлов, представляя файл как объект, который можно создать, читать, записывать и т.д. Чтобы получить доступ к файлу, сначала надо создать объект класса CFile. Далее этот файл можно открыть, вызвав метод Open, в качестве параметров которого указывают путь к открываемому файлу и режим использования файла. Прототип метода Open() имеет следующий вид:

virtual BOOL Open(LPCTSTR FileName, UINT Flags, CFileException* pError = NULL);

В качестве параметра FileName нужно указать имя открываемого файла. Можно указать только имя файла или полное имя файла, включающее полный путь к нему.

Второй параметр Flags определяет действие, выполняемое с файлом, а также атрибуты файла. Ниже представлены некоторые возможные значения параметра Flags:

СFile::modeCreate - Создается новый файл. Если указанный файл существует, то его содержимое стирается и длина файла устанавливается равной нулю.

CFile::modeRead - Файл открывается только для чтения.

СFile::modeReadWrite - Файл открывается для записи и для чтения.

CFile::modeWrite - Файл открывается только для записи.

Необязательный параметр pError, который является указателем на объект класса CFileException, используется только в том случае, если выполнение операции с файлом вызовет ошибку. При этом в объект, указываемый pError, будет записана дополнительная информация.

Метод Open() возвращает ненулевое значение, если файл открыт и нуль в случае ошибки. Ошибка при открытии файла может случиться, например, если методу Open() указан для чтения несуществующий файл.

После завершения работы с файлом, его надо закрыть. Класс CFile имеет для этого специальный метод Close().

Для чтения из файла предназначен метод Read. Его прототип выглядит следующим образом:

virtual UINT Read( void* Buf, UINT nCount );

Параметры:

Buf – указатель на определенный пользователем буфер (область памяти), где размещаются считанные данные;

nCount – максимальное количество байт, которые будут считаны из файла.

Возвращаемое значение – количество байт, переданных в буфер, которое может быть меньше, чем nCount, если при чтении был достигнут конец файла.

Для записи в файл предназначен метод Write. Его прототип выглядит следующим образом:

virtual void Write( const void* Buf, UINT nCount );

Параметры:

Buf – указатель на определенный пользователем буфер (область памяти), где размещены данные, которые необходимо записать в файл;

nCount – количество байт, которые необходимо записать в файл.

Класс CStdioFile

Этот класс позволяет выполнять буферизированный ввод/вывод в текстовом и двоичном режиме. Для объектов класса CStdioFile можно вызывать практически всеметоды класса CFile.

Для чтения и записи в текстовый файл класс CStdioFile включает два метода ReadString и WriteString. Метод ReadString позволяет прочитать из файла строку символов, а метод WriteString - записать.

Класс CString– удобное средство для работы со строками. В отличие от языка C, где работа со строковыми данными сводится к использованию массивов символов, ограниченных конечным нулем, а действия над строками осуществляются через указатели на строки, класс CString позволяет создать строковую переменную, аналогичную переменной типа string в языке Pascal. CString не имеет базового класса.

Класс CString содержит последовательность символов переменной длины и набор функций и операций над ней. Тип символа – TCHAR, т. е. если в программе используется двухбайтный символ (определен макрос _UNICODE), то тип символа устанавливается как WCHAR, в противном случае тип символа определяется как char.

В класс CString включено несколько конструкторов, в том числе конструктор по умолчанию, конструктор с параметрами, копирующий конструктор, при создании строк нет необходимости заботиться о выделении достаточного объема памяти для них, выделение памяти производится автоматически.

GetBuffer

Этот метод возвращает указатель на внутренний символьный буфер объекта CString. Возвращенный LPTSTR - неконстанта и таким образом позволяет прямую модификацию содержания CString.

53. Устройства, способные передавать изображение, использующие свойства анизотропной жидкости изменять свою оптическую плотность или отражающую способность при воздействии напряжения, называются:
• жидкокристаллическими дисплеями

54. Недостаток дисплеев на базе ЭЛТ
• большое потребление энергии и габариты

55. Максимальный объем адресуемой видеопамяти видеоадаптеров EGA и VGA
• 256 КБайт

56. Наибольший охват цветов порождают цвета
• красный, зеленый, синий

57. Искажения при обратном преобразовании сигнала, когда исходные значения уже не восстанавливаются в прежнем виде, называют:
• шумом квантования

58. EGA расшифровывается как:
• улучшенный графический адаптер

59. Проекция, в которой картинная плоскость совпадает с одной из координатных плоскостей или параллельна ей, — это проекция .
• ортографическая

60. Графическим редактором принципиальных схем является:
• ACCEL Schematic

61. Логическая текстовая страница занимает размер памяти в видеобуфере компьютера, если адаптер выводит текст с разрешением 80*25.
• 80*25*2 = 4 Кбайт

62. Среди перечисленных форматов, в DIB не используется:
• 16 бит на пиксел

63. Базовый класс для всех классов, обеспечивающих интерфейс с графическими объектами Windows, — это:
• CgdiObjec

64. Размеры всех символов совпадают в шрифте
• фиксированном

65. В векторной графике широко используется:
• кривая Безье

66. Высоты символов совпадают, но они могут иметь разную ширину в шрифте
• пропорциональном

67. На математическом (геометрическом) представлении данных основаны
• векторные изображения

68. Блок цифро-аналоговый преобразователь (ЦАП) впервые появился в:
• VGA

69. Видеоадаптер, который может подключаться к бытовому телевизору
• CGA

70. Степень двойки, при которой в цифровом видео получается нужное число допустимых значений параметра, называется:
• уровнем квантования

71. В память знакогенератора кодовую страницу загружает команда операционной системы MS-DOS:
• MODE

72. В центральном проецировании:
• все прямые исходят из одной точки

73. Графический формат, предполагающий потерю части информации при сжатии графических данных, — .
• JPEG

74. Совместимость видеоадаптеров заключается в том, что .
• видеоадаптер каждой новой версии поддерживает все режимы работы предыдущих версий

75. Примитивы компьютерной графики используются:
• при построении изображений

76. В системе STATISTICA графики для визуализации значений из выделенного блока в электронной таблице — это:
• пользовательские графики

77. Базовым стандартом для разработки ускорителей стал видеоадаптер
• VGA

78. Микропроцессор семейства Pentium, в котором была впервые применена технология, позволяющая использовать богатую цветовую гамму, более реалистичную графику, полноэкранное видео, высококачественный звук и т.д., называется:
• Pentium MMX

79. Объект данных, помещаемый в исполняемый файл в момент создания программы, определяющий блоки диалога, курсоры, меню и предназначенный только для чтения — это:
• ресурс

80. Параллели изображаются концентрическими окружностями, а меридианы — пучком прямых, исходящих из центра в проекциях
• азимутальных

81. Инструменты для построения схем, эскизов, маркетинговых диаграмм и схем построения решений предоставляет:
• Visio

82. Проекция, для получения которой используется пучок прямых, неперпендикулярных плоскости экрана, называется:
• косоугольной

83. Тип дисплея, изображение на экране которого формируется электронным лучом, периодически сканирующим экран с образованием на нем стандартных строк развертки, называется дисплеем
• на базе ЭЛТ

84. Бит в шаблоне кисти, равный единице, означает, что нужно ставить точку цвета
• кисти

85. Свойство двойственности распространяется на гексаэдр — .
• октаэдр

86. Углы в рассматриваемой реализации Си++ задаются в:
• градусах в направлении против часовой стрелки

87. Программный знакогенератор осуществляет преобразование ASCII-кода в пиксельное представление в видеобуфере при:
• записи текста в видеобуфер в графическом режиме

88. В Microsoft Office разгруппированы могут быть рисунки:
• формата метафайла

89. Возможность по управлению экраном, которая не поддерживается MS-DOS
• вывод пиксела на экран

90. Небольшие изображения, которые используются для представления движущихся частей в сюжете на экране дисплея, компьютерных играх, обучающих программах и т.д., — это:
• спрайты

91. На экране телевизора изображение строится при помощи трех типов люминофоров — .
• красного, зеленого, синего

92. Цветовая модель, использующая цвета: голубой, пурпурный, желтый, — это:
• CMY

93. В системном ПЗУ записана BIOS видеоадаптера:
• CGA

94. Под термином «Кривая Безье» подразумевается:
• кривая, применяющаяся для описания изображений в векторной графике

95. Фиксированный формат (разрешение) при отображении на экране определен для форматов
• растровых

96. Процесс разложения цветного изображения на четыре составляющие стандартного печатного процесса называется:
• цветоделением

97. За управление памятью, динамическую компоновку, ресурсы и другие услуги операционной системы отвечает:
• ядро

98. Областью применения пассивной (неинтерактивной) графики является:
• реклама

99. Характеристикой цвета, определяющей его чистоту, является:
• насыщенность

100. Графические данные, представленные в векторном виде, состоят из:
• описаний простейших геометрических элементов и параметров их обводок и заливок

101. Для графического режима работы адаптеров EGA, VGA, SVGA в адресном пространстве компьютера отводится объем
• 64 Кбайт

102. Максимальная независимость от аппаратуры видеоадаптера достигается на уровне
• операционной системы

103. Струйный принтер воспроизводит изображение на бумаге с помощью
• микроскопических капель чернил

104. Функции графического интерфейса работают с:
• драйверами

105. Не является аффинным преобразованием плоскости
• проецирование на координатные оси

106. Плоттер предназначен для:
• вывода рисунков и чертежей

107. Под моделью графического объекта в системах инженерной графики понимается:
• совокупность сведений, однозначно определяющих его форму

108. Формат JPEG использует разрядов (бит):
• 24

109. Блок видеоадаптера, осуществляющий декодирование адресов портов ввода/вывода и адресов памяти графической карты, — это:
• блок интерфейс с системной шиной

110. Условный номер кодовой страницы, применяемый в России
• 866

111. При вызове видеодрайвера BIOS используется прерывание 10h. При этом номер вызываемой функции помещается в регистр процессора
• AH

112. На IBM PC спрайты реализованы
• программно

113. На описание каждого символа в таблице определения символов отводится __________________ байт(-а).
• 32

114. Переключение активных страниц используют с целью
• ускорения вывода изображения на экран

115. Если уровень квантования равен 4, то описываемый параметр может принимать значений
• 16

116. Растровые данные представляют собой .
• набор числовых значений, определяющих цвета всех пикселов, формирующих изображение

117. Цветовая модель, основанная на трех цветах: красном, зеленом, синем, — .
• RGB

118. Инструменты панели рисования в Microsoft Office, которые используются для изменения внешнего вида графических объектов, — это:
• инструменты оформления объектов

119. Задаются координаты символа с целью вывода его на экран в текстовом режиме с разрешением 80*25. Неверно заданы координаты символа
• (80; 15)

120. Визуализация векторных и растровых данных
• требует больше времени на векторные

В 10:35 поступил вопрос в раздел Компьютерная графика, который вызвал затруднения у обучающегося.

Вопрос вызвавший трудности

Базовый класс для всех классов, обеспечивающих интерфейс с графическими объектами Windows, — это:

Для того чтобы дать полноценный ответ, был привлечен специалист, который хорошо разбирается требуемой тематике "Компьютерная графика". Ваш вопрос звучал следующим образом: Базовый класс для всех классов, обеспечивающих интерфейс с графическими объектами Windows, — это:

После проведенного совещания с другими специалистами нашего сервиса, мы склонны полагать, что правильный ответ на заданный вами вопрос будет звучать следующим образом:

НЕСКОЛЬКО СЛОВ ОБ АВТОРЕ ЭТОГО ОТВЕТА:


Работы, которые я готовлю для студентов, преподаватели всегда оценивают на отлично. Я занимаюсь написанием студенческих работ уже более 4-х лет. За это время, мне еще ни разу не возвращали выполненную работу на доработку! Если вы желаете заказать у меня помощь оставьте заявку на этом сайте. Ознакомиться с отзывами моих клиентов можно на этой странице.

Субботина Ландыш Кирилловна - автор студенческих работ, заработанная сумма за прошлый месяц 56 287 рублей. Её работа началась с того, что она просто откликнулась на эту вакансию

ПОМОГАЕМ УЧИТЬСЯ НА ОТЛИЧНО!

Выполняем ученические работы любой сложности на заказ. Гарантируем низкие цены и высокое качество.

Деятельность компании в цифрах:

Зачтено оказывает услуги помощи студентам с 1999 года. За все время деятельности мы выполнили более 400 тысяч работ. Написанные нами работы все были успешно защищены и сданы. К настоящему моменту наши офисы работают в 40 городах.

Ответы на вопросы - в этот раздел попадают вопросы, которые задают нам посетители нашего сайта. Рубрику ведут эксперты различных научных отраслей.

Полезные статьи - раздел наполняется студенческой информацией, которая может помочь в сдаче экзаменов и сессий, а так же при написании различных учебных работ.

Красивые высказывания - цитаты, афоризмы, статусы для социальных сетей. Мы собрали полный сборник высказываний всех народов мира и отсортировали его по соответствующим рубрикам. Вы можете свободно поделиться любой цитатой с нашего сайта в социальных сетях без предварительного уведомления администрации.

11. Классы графического интерфейса. Классы контекстов устройств. Графические объ-екты и классы графических объектов. Установка графических объектов. Рисование графических фигур. Вывод текста.

  • Классы графического интерфейса

Библиотека MFC обеспечивает программиста мощными средствами графического вывода в виде функций-членов соответствующих классов. При этом библиотечные классы берут на себя большую часть работы по созданию, инициализации и корректному освобождению графических ресурсов.

Для организации графического вывода приложению необходимо работать как с контекстом устройства, так и с рядом объектов GDI: перьями, кистями, шрифтами и т.д. Однако функции рисования связаны именно с контекстом устройства.

Классы контекстов устройств и графических объектов инкапсулируют функции API, с которыми мы познакомились при выполнении лабораторной работы №2.

Экран дисплея в Windows рассматривается как три графических устройств, для каждого из которых можно создать и определить свой контекст устройства. Этими устройствами являются:

Класс CDC

Базовый класс контекста устройства. Объекты этого класса используются для работы со всем экраном дисплея или с таким устройством как принтер. Кроме того, именно указатель CDC* передается в такие функции, как, например,CView::OnDraw(), хотя может фактически указывать на объекты других производных классов контекстов устройств.

В программе контекст устройства создается вызовом соответствующего конструктора

CPaintDC::CPaintDC(CWnd* pWnd );

CClientDC::CClientDC(CWnd* pWnd );

Библиотека MFC обеспечивает разработчиков всеми необходимыми классами, которые инкапсулируют соответствующие графические объекты Windows. Кроме того, библиотека имеет в своем составе дополнительные классы, значительно облегчающие решение ряда задач(классы CPoint, CSize, CRect, CRectTracker) или унифицирующие работу с графическими объектами как таковыми(CGdiObject).

Класс CGdiObject

Базовый класс для всех классов, обеспечивающий интерфейс с графическими объектами Windows.

Класс CPen

Инкапсулирует объект Windows «перо», который может быть выбран в контекст устройства и использоваться для определения типа и цвета линий или графических фигур.

Класс CBrush

Инкапсулирует объект Windows «кисть», который может быть выбран в контекст устройства и использоваться для определения типа и цвета заливки внутренних областей замкнутых фигур.

Класс CFont

Инкапсулирует объект Windows «шрифт», который может быть выбран в контекст устройства и использоваться при операциях вывода текстовой информации.

Создать объект класса CPen или CBrush можно двумя способами:

1)Конструктор используется как для создания собственно объекта, так и для его инициализации.

2) Конструктор используется только для создания объекта, а для его инициализации дополнительно вызывается функции (эта функции имеет префикс Create)

Чтобы настроить параметры рисования с помощью соответствующего графического объекта, необходимо выполнить следующие действия:

1)Создать графический объект.

2)Заменить в контексте устройства текущий графический объект вновь созданным, сохранив при этом указатель на «старый» объект.

3)Закончив операции рисования, восстановить «старый» графический объект в контексте устройства при помощи сохраненного указателя.

4)Обеспечить удаление созданного объекта при выходе из области видимости, что происходит автоматически для объектов, созданных в стеке приложения.

Установка объектов рисования выполняется функцией SelectObject()

CPen* SelectObject( CPen* pPen );

CBrush* SelectObject( CBrush* pBrush );

virtual CFont* SelectObject( CFont* pFont );

Кроме графических объектов, созданных в приложении, можно использовать и предопределенные системные. Для установки системных графических объектов используется функция SelectStockObject( )

virtual CGdiObject* SelectStockObject( int nIndex );

Параметр nIndex задает тип создаваемого объекта.

Для отображения графических фигур можно использовать следующие функции-члены класса CDC, инкапсулирующие соответствующие функции API:

BOOL Rectangle( int x1, int y1, int x2, int y2 );

BOOL Rectangle( LPCRECT lpRect );

BOOL Ellipse( int x1, int y1, int x2, int y2 );

BOOL Ellipse( LPCRECT lpRect );

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 );

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 );

Фигуры рисуются установленным пером CPen и закрашиваются кистью CBrush.

Для вывода текста можно использовать функции-члены класса CDC- DrawText() и TextOut() , инкапсулирующие соответствующие функции API.

int DrawText( LPCTSTR lpszString, int nCount, LPRECT lpRect, UINT nFormat );

int DrawText( const CString& str, LPRECT lpRect, UINT nFormat );

virtual BOOL TextOut( int x, int y, LPCTSTR lpszString, int nCount );

BOOL TextOut( int x, int y, const CString& str );

Цвет символов и фона текста устанавливаются следующими функциями

CDC::virtual COLORREF SetTextColor( COLORREF crColor );

CDC::virtual COLORREF SetBkColor( COLORREF crColor );

Для создания шрифта для вывода текста необходимо создать объект класса TFont, проинициализировать его и установить в контексте устройства.

CFont::BOOL CreateFontIndirect(const LOGFONT* lpLogFont );

memset(&lf, 0, sizeof(LOGFONT));

CFont* def_font = dc.SelectObject(&font);

CFont::BOOL CreateFont( int nHeight, int nWidth, int nEscapement, int nOrientation, int nWeight, BYTE bItalic, BYTE bUnderline, BYTE cStrikeOut, BYTE nCharSet, BYTE nOutPrecision, BYTE nClipPrecision, BYTE nQuality, BYTE nPitchAndFamily, LPCTSTR lpszFacename );

Читайте также: