Базовый класс для всех классов обеспечивающих интерфейс с графическими объектами windows это
Весь вывод в системе 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 );
Читайте также: