Знакомство с графикой в WinAPI: рисование линий, прямоугольников, эллипсов. Рисование рисунков по вычисленным координатам презентация
Содержание
- 2. Запущенное win32 приложение!
- 3. Где в коде рисовать картинки? Файл Win32Project1.cpp Функция WndProc()
- 4. Где в коде рисовать картинки? (2) LRESULT CALLBACK WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM
- 5. Точки в Декартовой системе координат
- 6. Экранная система координат
- 7. Рисуем линии case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); // Перемещаем "курсор" рисования
- 8. Рисуем эллипс case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); // Рисуем фиксированный прямоугольник
- 9. Оцифровка точек в координатной сетке
- 10. Рисуем много линий case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); int x1 =
- 11. Рисуем много линий case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); int x1 =
- 12. Рисуем много линий case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); int x1 =
- 13. Рисуем много линий case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); int x1 =
- 14. Такое разное перо case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); HPEN hPen; hPen
- 15. Такое разное перо (2) hPen = CreatePen(PS_DASH, 1, RGB(255, 0, 0)); SelectObject(hdc, hPen); MoveToEx(hdc, 110, 10,
- 16. Цветное перо case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); HPEN hPen; int x
- 17. Цветное перо case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); HPEN hPen; int x
- 18. Кисть case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); HBRUSH hBrush; hBrush = CreateSolidBrush(RGB(0,
- 19. Кисть (2) hBrush = CreateHatchBrush(HS_HORIZONTAL, RGB(0, 0, 255)); SelectObject(hdc, hBrush); RECT rect2 = { 50, 50,
- 20. Кисть (3) hBrush = CreateHatchBrush(HS_CROSS, RGB(128, 0, 128)); SelectObject(hdc, hBrush); HPEN hPen; hPen = CreatePen(PS_SOLID, 5,
- 21. Очерчиваем клиентскую область case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); // RECT -
- 22. struct В языке Си, структура (struct) — композитный тип данных, инкапсулирующий без сокрытия набор значений различных
- 23. Пример struct struct tagRECT // определение структуры tagRECT { LONG left; // поле left LONG top;
- 24. struct и typedef typedef struct name { type atrib1; type atrib2; // остальные элементы структуры... }
- 25. struct и typedef – пример (RECT) // windef.h typedef struct tagRECT { LONG left; LONG top;
- 26. Рисуем много линий из центра case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); RECT
- 27. Используем относительные координаты
- 28. Ромб // Рисуем ромб MoveToEx(hdc, 80, 0, NULL); LineTo(hdc, 50, 50); LineTo(hdc, 80, 100); LineTo(hdc, 110,
- 29. Ромб // Рисуем ромб MoveToEx(hdc, 80, 0, NULL); LineTo(hdc, 50, 50); LineTo(hdc, 80, 100); LineTo(hdc, 110,
- 30. Ромб HPEN hPen; hPen = CreatePen(PS_SOLID, 3, RGB(0, 0, 0)); SelectObject(hdc, hPen); // Рисуем ромб MoveToEx(hdc,
- 31. Относительные координаты int x = 50; int y = 0; MoveToEx(hdc, x + 30, y, NULL);
- 32. Относительные координаты int x = 50; int y = 0; MoveToEx(hdc, x + 30, y, NULL);
- 33. Относительные координаты int x = 100; int y = 100; MoveToEx(hdc, x + 30, y, NULL);
- 34. Относительные координаты int x = 100; int y = 100; MoveToEx(hdc, x + 30, y, NULL);
- 35. Относительные координаты
- 36. Отдельная функция для отрисовки ромба с заданным положением void Romb(HDC hdc, int x, int y) {
- 37. Рисуем при помощи нашей функции несколько ромбов в ряд … HDC hdc = BeginPaint(hWnd, &ps); Romb(hdc,
- 38. Рисуем при помощи нашей функции несколько ромбов – используем цикл … HPEN hPen; hPen = CreatePen(PS_SOLID,
- 39. Рисуем при помощи нашей функции несколько ромбов – при помощи цикла … HPEN hPen; hPen =
- 40. Рисуем при помощи нашей функции несколько ромбов – при помощи цикла … HPEN hPen; hPen =
- 41. Рисуем при помощи нашей функции несколько ромбов – при помощи цикла … HPEN hPen; hPen =
- 42. Трассировка циклического алгоритма … HPEN hPen; hPen = CreatePen(PS_SOLID, 3, RGB(0, 128, 0)); SelectObject(hdc, hPen); int
- 43. Трассировка циклического алгоритма (2) Установка точки останова
- 44. Трассировка циклического алгоритма (3)
- 45. Трассировка циклического алгоритма (4)
- 46. Трассировка циклического алгоритма (5)
- 47. Трассировка циклического алгоритма (6) Запуск трассировки
- 48. Трассировка циклического алгоритма (7) (при)остановка в точке остановки
- 49. Трассировка циклического алгоритма (8) Пошаговая трассировка
- 50. Трассировка циклического алгоритма (9) Шаг сделан (F10)
- 51. Трассировка циклического алгоритма (10) Еще шаг сделан (F10)
- 52. Трассировка циклического алгоритма (11) Еще шаг сделан (F10)
- 53. Трассировка циклического алгоритма (12) Еще шаг сделан
- 54. Трассировка циклического алгоритма (13) Еще шаг сделан
- 55. Трассировка циклического алгоритма (14) Еще шаг сделан
- 56. Трассировка циклического алгоритма (15) Еще шаг сделан
- 57. Трассировка циклического алгоритма (16) Возобновить выполнение
- 58. Трассировка циклического алгоритма (17) Приложение работает!
- 59. Изменяем сразу и X и Y … int x = 10; int y = 50; do
- 60. вложенные циклы … int y = 50; do { int x = 10; do { Romb(hdc,
- 61. вложенные циклы … int y = 50; do { int x = 10; do { Romb(hdc,
- 62. Логотип Mercedes-Benz
- 63. Вспоминаем тригонометрию Численные значения тригонометрических функций угла в тригонометрической окружности с радиусом, равным единице
- 64. Функция отрисовки упрощенного логотипа МерседесБенц void MercedesBenz(HDC hdc, int x, int y) { Ellipse(hdc, x, y,
- 65. Тригонометрия и Мерседес-Бенц
- 66. Рисуем знак зодиака Мерседес-Бенц LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch
- 67. Рисуем ряд знаков Мерседес-Бенц … int x = 10; do { MercedesBenz(hdc, x, 20); x +=
- 68. Рисуем поле знаков Мерседес-Бенц int y = 10; do { int x = 10; do {
- 69. Вспоминаем тригонометрию Численные значения тригонометрических функций угла в тригонометрической окружности с радиусом, равным единице
- 70. Рисуем окружность из знаков Мерседес-Бенц … #define _USE_MATH_DEFINES #include … double alpha = 0; int R
- 71. Рисуем окружность из знаков Мерседес-Бенц … #define _USE_MATH_DEFINES #include … double alpha = 0; int R
- 72. Рисуем окружность из знаков Мерседес-Бенц … #define _USE_MATH_DEFINES #include … double alpha = 0; int R
- 73. Рисуем спираль из знаков Мерседес-Бенц … double alpha = 0; int R = 0; int cx
- 74. Рисуем спираль из знаков Мерседес-Бенц … double alpha = 0; int R = 0; int cx
- 75. Рисуем спираль из знаков Мерседес-Бенц
- 76. Домашнее задание Нарисовать логотип любимой марки автомобиля (не Мерседес!) Создать функцию для отрисовки логотипа любимой марки
- 78. Скачать презентацию