Лабораторная работа №01_2019_ПростейшаяГрафика

Содержание

Слайд 2

Создание win32 приложения в VS

Создание win32 приложения в VS

Слайд 3

Создание win32 приложения в VS

Создание win32 приложения в VS

Слайд 4

Создание win32 приложения в VS (2)

Создание win32 приложения в VS (2)

Слайд 5

Создание win32 приложения в VS (3)

Создание win32 приложения в VS (3)

Слайд 6

Создание win32 приложения в VS (4)

Создание win32 приложения в VS (4)

Слайд 7

Создание win32 приложения в VS (5)

Создание win32 приложения в VS (5)

Слайд 8

Создание win32 приложения в VS (6)

Создание win32 приложения в VS (6)

Слайд 9

Создание win32 приложения в VS (7) – создано!

Создание win32 приложения в VS (7) – создано!

Слайд 10

Запущенное win32 приложение!

Запущенное win32 приложение!

Слайд 11

Где в коде рисовать картинки? Файл Win32Project1.cpp Функция WndProc()

Где в коде рисовать картинки?

Файл Win32Project1.cpp
Функция WndProc()

Слайд 12

Где в коде рисовать картинки? (2) LRESULT CALLBACK WndProc(HWND hWnd, UINT

Где в коде рисовать картинки? (2)

LRESULT CALLBACK WndProc(HWND hWnd, UINT message,

WPARAM wParam, LPARAM lParam)
{
switch (message)
{

case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
// TODO: Добавьте сюда любой код прорисовки, использующий HDC...
EndPaint(hWnd, &ps);
}
break;

default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
Слайд 13

Точки в Декартовой системе координат

Точки в Декартовой системе координат

Слайд 14

Экранная система координат

Экранная система координат

Слайд 15

Оцифровка точек в координатной сетке

Оцифровка точек в координатной сетке

Слайд 16

Рисуем линии case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd,

Рисуем линии

case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd,

&ps);
// Перемещаем "курсор" рисования линии в точку (x = 10, y = 30)
MoveToEx(hdc, 10, 30, NULL);
// Рисуем линию из текущей позиции курсора в точку (x = 10, y = 100)
// "Курсор" после отрисовки находится в новой точке (x = 10, y = 100)
LineTo(hdc, 10, 100);
// Рисуем линию от предыдущей точки (x = 10, y = 100) до точки (x = 150, y = 100)
LineTo(hdc, 150, 100);
// Рисуем линию от предыдущей точки (x = 150, y = 100) до точки (x = 10, y = 30)
LineTo(hdc, 10, 30);
EndPaint(hWnd, &ps);
}
Слайд 17

Задача 1 В Windows приложение добавить рисунок домика.

Задача 1

В Windows приложение добавить рисунок домика.

Слайд 18

Задача 1: Решение В Windows приложение добавить рисунок домика.

Задача 1: Решение

В Windows приложение добавить рисунок домика.

Слайд 19

Задача 2 Рядом с домиком добавьте ёлочку

Задача 2

Рядом с домиком добавьте ёлочку

Слайд 20

Задача 2 Рядом с домиком добавьте ёлочку

Задача 2

Рядом с домиком добавьте ёлочку

Слайд 21

Рисуем эллипс case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd,

Рисуем эллипс

case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd,

&ps);
// Рисуем фиксированный прямоугольник
Rectangle(hdc, 10, 20, 120, 160);
// Рисуем эллипс, вписанный в прямоугольник
Ellipse(hdc, 10, 20, 120, 160);
EndPaint(hWnd, &ps);
}
Слайд 22

Такое разное перо case WM_PAINT: { PAINTSTRUCT ps; HDC hdc =

Такое разное перо

case WM_PAINT: {
PAINTSTRUCT ps;
HDC hdc =

BeginPaint(hWnd, &ps);
HPEN hPen;
hPen = CreatePen(PS_SOLID, 2, RGB(255, 0, 0));
SelectObject(hdc, hPen);
MoveToEx(hdc, 10, 10, NULL);
LineTo(hdc, 10, 110);
hPen = CreatePen(PS_SOLID, 5, RGB(255, 128, 0));
SelectObject(hdc, hPen);
LineTo(hdc, 110, 60);
hPen = CreatePen(PS_SOLID, 10, RGB(255, 128, 128));
SelectObject(hdc, hPen);
LineTo(hdc, 10, 10);
Слайд 23

Такое разное перо (2) hPen = CreatePen(PS_DASH, 1, RGB(255, 0, 0));

Такое разное перо (2)

hPen = CreatePen(PS_DASH, 1, RGB(255, 0, 0));
SelectObject(hdc, hPen);
MoveToEx(hdc,

110, 10, NULL);
LineTo(hdc, 110, 110);
hPen = CreatePen(PS_DOT, 1, RGB(0, 255, 0));
SelectObject(hdc, hPen);
LineTo(hdc, 160, 60);
hPen = CreatePen(PS_DASHDOTDOT, 1, RGB(0, 0, 255));
SelectObject(hdc, hPen);
LineTo(hdc, 110, 10);
DeleteObject(hPen);
EndPaint(hWnd, &ps);
}
Слайд 24

Задача 3 Рядом с ёлкой добавьте дерево (по вашей схеме – но состоящее из эллипсов)

Задача 3

Рядом с ёлкой добавьте дерево (по вашей схеме –

но состоящее из эллипсов)
Слайд 25

Задача 3: Решение Моё решение. Ваше может быть сильно другим

Задача 3: Решение

Моё решение. Ваше может быть сильно другим

Слайд 26

Кисть case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps);

Кисть

case WM_PAINT: {
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
HBRUSH

hBrush;
hBrush = CreateSolidBrush(RGB(0, 0, 255));
SelectObject(hdc, hBrush);
RECT rect = { 10, 3, 100, 130 };
FillRect(hdc, &rect, hBrush);
// СЛЕДУЮЩИЙ КОД ВСТАВИТЬ СЮДА!!!
EndPaint(hWnd, &ps);
}
Слайд 27

Кисть (2) hBrush = CreateHatchBrush(HS_HORIZONTAL, RGB(0, 0, 255)); SelectObject(hdc, hBrush); RECT

Кисть (2)

hBrush = CreateHatchBrush(HS_HORIZONTAL, RGB(0, 0, 255));
SelectObject(hdc, hBrush);
RECT rect2 =

{ 50, 50, 120, 120 };
FillRect(hdc, &rect2, hBrush);
Слайд 28

Кисть (3) hBrush = CreateHatchBrush(HS_CROSS, RGB(128, 0, 128)); SelectObject(hdc, hBrush); HPEN

Кисть (3)

hBrush = CreateHatchBrush(HS_CROSS, RGB(128, 0, 128));
SelectObject(hdc, hBrush);
HPEN hPen;
hPen = CreatePen(PS_SOLID,

5, RGB(128, 0, 128));
SelectObject(hdc, hPen);
Ellipse( hdc, 70, 10, 170, 100);
DeleteObject(hBrush);
Слайд 29

Задача 4 Добавьте солнышко

Задача 4

Добавьте солнышко

Слайд 30

Задача 4: Решение Моё решение. Ваше может быть сильно другим

Задача 4: Решение

Моё решение. Ваше может быть сильно другим

Слайд 31

Задача 5 Добавьте облако

Задача 5

Добавьте облако

Слайд 32

Задача 6 Добавьте то, что считаете необходимым добавить!

Задача 6

Добавьте то, что считаете необходимым добавить!

Слайд 33

Задача 7 Раскрасьте и украсьте дом!

Задача 7

Раскрасьте и украсьте дом!

Слайд 34

Домашнее задание – часть 1 Дорисовать рисунок из классной работы, добавив

Домашнее задание – часть 1

Дорисовать рисунок из классной работы, добавив к

нему подходящее сооружение или механизм:
Антенна
Автомобиль
Велосипед
Гараж
Поезд
Самолет
Яхта
Любое другое !
Добавленное сооружение/механизм должен состоять не менее чем из 15 отрезков, эллипсов или других элементов.
Оно должно быть цветным и содержать заливку.
Слайд 35

Домашнее задание – часть 2 Надо выбрать любой логотип автомобиля (можно

Домашнее задание – часть 2

Надо выбрать любой логотип автомобиля (можно

из вариантов ниже) и нарисовать его контуром схематично.
Слайд 36

Домашнее задание – часть 3 (по желанию) Удивите меня сложным и

Домашнее задание – часть 3 (по желанию)


Удивите меня сложным и

красивым рисунком!
ВАЖНО - нельзя использовать циклы, развилки, генератор случайный чисел, вызовы собственных функций, в том числе нельзя использовать рекурсию!
Это именно сложный и красивый рисунок, а не красивая математическая формула!
Слайд 37

Домашнее задание - оформление Для сдачи домашней работы нужно подготовить отчет.

Домашнее задание - оформление

Для сдачи домашней работы нужно подготовить отчет.
Отчет состоит

из:
Стандартного титульного листа
Задания на лабораторную работу (отдельная страница)
Полной распечатки кода программы
Скриншот работающей программы
Листы с расчетами всех рисунков (листы могут быть весьма неряшливо оформлены – но они должны доказывать, что вы самостоятельно рассчитывали параметры рисунков)
Заключение – выводы, чему научился