Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Топ:
Эволюция кровеносной системы позвоночных животных: Биологическая эволюция – необратимый процесс исторического развития живой природы...
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
Проблема типологии научных революций: Глобальные научные революции и типы научной рациональности...
Интересное:
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Цель: Научиться работать с клиентской областью. Сделать подписи, научиться рисовать простейшие геометрические фигуры средствами WinAPI.
Краткие теоретические сведения:
FillRect – заполняет указанную прямоугольную область, используя заданную кисть, до правой и нижней границ.
SetRect – задает координаты указанной прямоугольной области.
Задание:
2.1. Разбить клиентскую область на 6 частей и вывести в них прямоугольник, квадрат, ромб, эллипс, сектор (45 градусов), равносторонний треугольник. Для построения треугольника и ромба использовать отрезки. Сделать подписи под каждым рисунком. Использовать параметры пера и кисти. В правом нижнем углу экрана написать свою фамилию и инициалы.
2.2. Распечатать расписание занятий вида, представленного на рис. 1
РАСПИСАНИЕ ЗАНЯТИЙ

Рис.1. Вид документа расписания занятий
и так далее, используя различные цвета заливки для различных видов занятий.
2.3. Разработать приложение так, чтобы в окне было изображено несколько прямоугольников разных цветов (см. рис. 2).

Рис. 2. Пример клиентской области
Используя FillRect, избавиться от рамок прямоугольников. Используя близкие по значениям цвета, получить эффект плавного перехода.
2.4.Задавая координаты центров и длины сторон случайным образом, нарисовать 10 закрашенных прямоугольников.
Анализ реализации алгоритма:
При выполнении первого задания для разбиения клиентской области на 6 частей я использовала функции MoveToEx() и LineTo().
Для вывода прямоугольника, квадрата, эллипса, сектора я использовала стандартные функции Rectangle(), Ellipse(), Pie(); для построения треугольника и ромба отрезками – функции MoveToEx() и LineTo().
Чтобы сделать подписи под каждым рисунком и в правом нижнем углу экрана написать свою фамилию и инициалы, я использовала функцию TextOut().
Исходный код:
MoveToEx(hdc, (R.right/3), R.top, NULL);
LineTo(hdc, (R.right/3), R.bottom);
SetTextColor(hdc,RGB(150,150,0));
TextOut(hdc,R.right-100,R.bottom-20,"Герман П.В.",11);
Pie(hdc, 85+R.right/3,R.bottom/2+40,2*R.right/3-85,R.bottom-40, R.right/2, R.bottom/2+40, 10, 10);//сектор
MoveToEx(hdc, 5*(R.right/6), (R.bottom)/2+40, NULL);
LineTo(hdc, 5*(R.right/6)+50, (R.bottom)/2+126.6);
LineTo(hdc, 5*(R.right/6)-50,(R.bottom)/2+126.6);
LineTo(hdc, 5*(R.right/6), (R.bottom)/2+40); //треугольник
Скриншоты реализации можно просмотреть в приложении 2.
Во втором задании создание и заполнение таблицы я оформила в виде цикла, используя функции MoveToEx(), LineTo(), FillRect(), DrawText().
Исходный код:
for (int i=1; i<11; ++i)
{
MoveToEx (hdc, 50, 20+i*(rect.bottom-25)/11, 0);
LineTo (hdc, rect.right-5, 20+i*(rect.bottom-25)/11);
}
if((i==0 || i==6) &&((j==1)||(j==0) || (j==2)))
{
hbr=CreateSolidBrush(RGB(180,240,240));
FillRect(hdc,&rectt,hbr);
SetBkColor (hdc, RGB(180,240,240));
rectt.top=20+((rect.bottom-25)/11)+i*(rect.bottom-25)/11+1;
DrawText (hdc, "Алгебра ауд.506",15, &rectt, DT_SINGLELINE| DT_CENTER | DT_END_ELLIPSIS);
}
static LOGFONT lf; //атрибуты шрифта
lf.lfEscapement=900; //поворот против часовой от горизонтали
lf.lfCharSet=DEFAULT_CHARSET; //установка языка (default – самоопределение)
lf.lfPitchAndFamily=DEFAULT_PITCH; //ширина символов
lf.lfHeight=20; //высота символа
Скриншоты реализации можно просмотреть в приложении 2.
Для выполнения третьего задания я использовала FillRect, чтобы избавиться от рамок прямоугольников. Эффект плавного перехода получился при помощи незначительного изменения цвета каждого прямоугольника в цикле:
for(int i=0;i<250; i++){
hBrush1=CreateSolidBrush(RGB(200,255-i,i));
SetRect(&R1,R.left+i,R.top+i,R.right-i,R.bottom-i);
FillRect(hdc,&R1,hBrush1);
}
Скриншоты реализации можно просмотреть в приложении 2.
Для выполнения четвертого задания я использовала датчик случайных чисел, чтобы задавать координаты центров и цвета случайным образом, и функции SetRect() и FillRect(), чтобы нарисовать и закрасить прямоугольники:
for(int i=0;i<10; i++)
{
hBrush1=CreateSolidBrush(RGB(rand()%255,rand()%255,rand()%255));
SetRect(&R1,rand()%500,rand()%500,rand()%500,rand()%500);
FillRect(hdc,&R1,hBrush1);
}
Скриншоты реализации можно просмотреть в приложении 2.
Выводы: Научилась работать с клиентской областью. Разработала приложение “Расписание занятий”. Изучила функции создания и удаления объектов для рисования, а также функции создания геометрических фигур.
|
|
|
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!