МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ЗВІТ
ПРО ВИКОНАННЯ ЛАБОРАТОРНОЇ РОБОТИ № 3
УПРАВЛІННЯ КОЛЬОРАМИ ТА СТИЛЯМИ ГРАФІЧНИХ ЗОБРАЖЕНЬ В СЕРЕДОВИЩІ MICROSOFT VISUAL STUDIO C++ 2008
Варіант №26
Львів 2015
Мета роботи: вивчити функції для управління кольорами та стилями графічних зображень; навчитися складати програми на алгоритмічній мові C++ для побудови різноманітних графічних зображень в середовищі Microsoft Visual Studio C++ 2008.
Завдання: Написати програму на алгоритмічній мові C++, яка виводить на екран розмальоване графічне зображення.
26.
/
Список ідентифікаторів змінних, функцій використаних у програмі:
Colorref RGB – повертає колір, який базується на заданих червоній (byRed), зеленій (byGreen) та синій (byBlue) компонентах.
CreatePen - ініціалізує перо заданими атрибутами;
CBrush – зміна для створення користувацького пензля;
CreateSolidBrush - ініціалізує суцільний пензель заданими атрибутами;
FloodFill – замальовує замкнуту область;
dc.Rectangle – малює прямокутник;
dc.MoveTo – переміщує поточну вершину;
dc.LineTo – малює лінію з поточної вершини;
Остаточна версія програми
#include "stdafx.h"
#include "MFCApplication6.h"
#include "ChildView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
CChildView::CChildView() {}
CChildView::~CChildView() {}
BEGIN_MESSAGE_MAP(CChildView, CWnd)
ON_WM_PAINT()
END_MESSAGE_MAP()
BOOL CChildView::PreCreateWindow(CREATESTRUCT& cs)
{ if (!CWnd::PreCreateWindow(cs))
return FALSE;
cs.dwExStyle |= WS_EX_CLIENTEDGE;
cs.style &= ~WS_BORDER;
cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS,
::LoadCursor(NULL, IDC_ARROW), reinterpret_cast<HBRUSH>(COLOR_WINDOW+1), NULL);
return TRUE;}
void CChildView::OnPaint()
{ CPaintDC dc(this);
CBrush k_brush;
CPen black; black.CreatePen (PS_SOLID, 15, RGB (0, 0, 0)); dc.SelectObject(&black);
dc.MoveTo(380,30);
dc.LineTo(980,30);
dc.LineTo(980,630);
dc.LineTo(380,630);
dc.LineTo(380,30);
dc.MoveTo(430,250);
dc.LineTo(855,250);
dc.MoveTo(470,230);
dc.LineTo(470,80);
dc.LineTo(420,80);
dc.LineTo(420,60);
dc.LineTo(540,60);
dc.LineTo(540,80);
dc.LineTo(490,80);
dc.LineTo(490,230);
dc.LineTo(470,230);
dc.MoveTo(510,230);
dc.LineTo(510,130);
dc.LineTo(560,130);
dc.LineTo(560,150);
dc.LineTo(530,150);
dc.LineTo(530,170);
dc.LineTo(560,170);
dc.LineTo(560,190);
dc.LineTo(530,190);
dc.LineTo(530,210);
dc.LineTo(560,210);
dc.LineTo(560,230);
dc.LineTo(510,230);
dc.MoveTo(590,230);
dc.LineTo(590,150);
dc.LineTo(580,150);
dc.LineTo(580,130);
dc.LineTo(590,130);
dc.LineTo(590,60);
dc.LineTo(610,60);
dc.LineTo(610,130);
dc.LineTo(620,130);
dc.LineTo(620,150);
dc.LineTo(610,150);
dc.LineTo(610,210);
dc.LineTo(640,210);
dc.LineTo(640,230);
dc.LineTo(590,230);
dc.MoveTo(660,230);
dc.LineTo(660,130);
dc.LineTo(710,130);
dc.LineTo(710,170);
dc.LineTo(695,170);
dc.LineTo(695,150);
dc.LineTo(680,150);
dc.LineTo(680,230);
dc.LineTo(660,230);
dc.MoveTo(730,230);
dc.LineTo(730,130);
dc.LineTo(750,130);
dc.LineTo(750,230);
dc.LineTo(730,230);
dc.Rectangle(730,60,750,80);
dc.MoveTo(770,230);
dc.LineTo(770,210);
dc.LineTo(810,210);
dc.LineTo(810,190);
dc.LineTo(770,190);
dc.LineTo(770,130);
dc.LineTo(830,130);
dc.LineTo(830,150);
dc.LineTo(790,150);
dc.LineTo(790,170);
dc.LineTo(830,170);
dc.LineTo(830,230);
dc.LineTo(770,230);
CPen a; a.CreatePen (PS_SOLID, 4, RGB (0, 0, 0)); dc.SelectObject(&a);
dc.Rectangle(900,530,980,630);
k_brush.CreateSolidBrush(RGB(0, 0, 255));dc.SelectObject(&k_brush);
dc.FloodFill(970, 625, RGB(0, 0, 0));k_brush.DeleteObject();
dc.MoveTo(895,630);
dc.LineTo(895,525);
dc.LineTo(980,525);
dc.LineTo(980,470);
dc.LineTo(840,470);
dc.LineTo(840,630);
dc.LineTo(895,630);
k_brush.CreateSolidBrush(RGB(255,215, 0));dc.SelectObject(&k_brush);
dc.FloodFill(850, 480, RGB(0, 0, 0));k_brush.DeleteObject();
dc.Rectangle(700,540,840,630);
k_brush.CreateSolidBrush(RGB(255, 0, 0)); dc.SelectObject(&k_brush);
dc.FloodFill(800, 625, RGB(0, 0, 0)); k_brush.DeleteObject();
dc.MoveTo(840,540);
dc.LineTo(840,470);
dc.LineTo(980,470);
dc.LineTo(980,400);
dc.LineTo(770,400);
dc.LineTo(770,540);
dc.LineTo(840,540);
k_brush.CreateSolidBrush(RGB(0, 255, 0));dc.SelectObject(&k_brush);
dc.FloodFill(800, 440, RGB(0, 0, 0));k_brush.DeleteObject();
dc.Rectangle(550,590,630,630);
k_brush.CreateSolidBrush(RGB(0, 0, 255));dc.SelectObject(&k_brush);
dc.FloodFill(560, 625, RGB(0, 0, 0));k_brush.DeleteObject();
dc.MoveTo(640,630);
dc.LineTo(640,540);
dc.LineTo(615,540);
dc.LineTo(615,590);
dc.LineTo(630,590);
dc.LineTo(630,630);
dc.LineTo(640,630);
k_brush.CreateSolidBrush(RGB(0, 0, 0));dc.SelectObject(&k_brush);
dc.FloodFill(620, 560, RGB(0, 0, 0));k_brush.DeleteObject();
dc.MoveTo(640,580);
dc.LineTo(700,580);
dc.LineTo(700,490);
dc.LineTo(680,490);
dc.LineTo(680,470);
dc.LineTo(590,470);
dc.LineTo(590,490);
dc.LineTo(580,490);
dc.LineTo(580,580);
dc.LineTo(615,580);
dc.LineTo(615,540);
dc.LineTo(640,540);
dc.LineTo(640,580);
k_brush.CreateSolidBrush(RGB(255, 255, 0));dc.SelectObject(&k_brush);
dc.FloodFill(600, 500, RGB(0, 0, 0));k_brush.DeleteObject();
dc.MoveTo(680,470);
dc.LineTo(680,310);
dc.LineTo(785,310);
dc.LineTo(785,400);
dc.LineTo(770,400);
dc.LineTo(770,540);
dc.LineTo(700,540);
dc.LineTo(700,470);
dc.LineTo(680,470);
k_brush.CreateSolidBrush(RGB(0, 0, 255));dc.SelectObject(&k_brush);
dc.FloodFill(740, 500, RGB(0, 0, 0));k_brush.DeleteObject();
dc.Rectangle(380,580,480,630);
k_brush.CreateSolidBrush(RGB(0, 255, 255));dc.SelectObject(&k_brush);
dc.FloodFill(400, 600, RGB(0, 0, 0));k_brush.DeleteObject();
dc.Rectangle(480,550,550,630);
k_brush.CreateSolidBrush(RGB(0, 255, 0));dc.SelectObject(&k_brush);
dc.FloodFill(490, 600, RGB(0, 0, 0));k_brush.DeleteObject();
dc.Rectangle(380,430,420,580);
k_brush.CreateSolidBrush(RGB(0, 0, 255));dc.SelectObject(&k_brush);
dc.FloodFill(400, 500, RGB(0, 0, 0));k_brush.DeleteObject();
dc.MoveTo(425,580);
dc.LineTo(425,430);
dc.LineTo(380,430);
dc.LineTo(380,370);
dc.LineTo(515,370);
dc.LineTo(515,550);
dc.LineTo(480,550);
dc.LineTo(480,580);
dc.LineTo(425,580);
k_brush.CreateSolidBrush(RGB(255, 255, 0)); dc.SelectObject(&k_brush);
dc.FloodFill(440, 560, RGB(0, 0, 0));k_brush.DeleteObject();
dc.MoveTo(515,490);
dc.LineTo(515,550);
dc.LineTo(550,550);
dc.LineTo(550,590);
dc.LineTo(580,590);
dc.LineTo(580,490);
dc.LineTo(515,490);
k_brush.CreateSolidBrush(RGB(255, 0, 0));dc.SelectObject(&k_brush);
dc.FloodFill(560, 540, RGB(0, 0, 0));k_brush.DeleteObject();
dc.MoveTo(515,490);
dc.LineTo(515,440);
dc.LineTo(680,440);
dc.LineTo(680,470);
dc.LineTo(590,470);
dc.LineTo(590,490);
dc.LineTo(515,490);
dc.LineTo(515,490);
k_brush.CreateSolidBrush(RGB(255, 105, 180));
dc.SelectObject(&k_brush);
dc.FloodFill(550, 460, RGB(0, 0, 0));
k_brush.DeleteObject();
}
Результат роботи програми
/
Висновок
Під час виконання даної лабораторної роботи я вивчити функції для управління кольорами та стилями графічних зображень; навчитися складати програми на алгоритмічній мові C++ для побудови різноманітних графічних зображень в середовищі Microsoft Visual Studio C++ 2008.