МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
/
ЗВІТ
До лабораторної роботи №3
З курсу :”Комп’ютерна графіка”
На тему:
“ УПРАВЛІННЯ КОЛЬОРАМИ ТА СТИЛЯМИ ГРАФІЧНИХ ЗОБРАЖЕНЬ ”
Львів 2014
Мета роботи - вивчити функції для управління кольорами та стилями графічних зображень; навчитися складати програми на алгоритмічній мові C++ для побудови різноманітних графічних зображень.
ЗАВДАННЯ
Написати програму на алгоритмічній мові C++, яка виводить на екран розмальоване графічне зображення.
19.
/
БЛОК-СХЕМА
/
СПИСОК ФУНКЦІЙ ВИКОРИСТАНИХ В ПРОГРАМІ
MovcTo(int x, int у) - переміщує поточну вершину, jc, у визначають координати нової поточної вершини. Повертає х- та y-координати попередньої поточної вершини як CPoint об’єкт.
LineTo(int x, int y )- малює лінію з поточної вершини до вершини з координатами лс, у. Поточна вершина переміщується у вершину з координатами jc, у.
CreatePen(int nPenStyle, int пWidth, COLORREF crColor) - ініціалізує перо заданими атрибутами.
Rectangle(int x1,int y1,int x2, int y2) - малює прямокутник, x1, y1 задають координати верхнього лівого кута, a x2, у2 правого нижнього кута прямокутника.
COLORREF RGB(BYTE by Red, BYTE byGreen, BYTE byBlue) - повертає колір, який базується на заданих червоній (byRed), зеленій (byGreen) та синій (byBlue) компонентах.
FloodFill(int х, int у, COLORREF crColor) - замальовує область екрану поточним пензлем, х, у - координати крапки всередині замкнутої області. crColor - колір межі до якої буде здійснюватися замальовування. Якщо фігура не замкнута то буде замальовано весь екран.
ТЕКСТ ПРОГРАМИ:
#include "stdafx.h"
#include "PKG lab_3.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() /// variant 19, laba 3 ///////// Variant 7 , laba 4
{
CPaintDC dc(this); // контекст устройства для рисования
// TODO: Добавьте код обработки сообщений
CPen pen,wr,ws,WD,SD;
wr.CreatePen(0,0, RGB(0,0,0));
dc.SelectObject(&wr);
///////////
dc.Rectangle(100,20,1200,270);
////////////
WD.CreatePen(0,0, RGB(0,0,0));
dc.SelectObject(&WD);
///////////////
dc.MoveTo(450,270);
dc.LineTo(950,270);
dc.MoveTo(450,270);
dc.LineTo(100,400);
dc.LineTo(850,650);
dc.LineTo(950,270);
//////////////////
CBrush blue_brush;
blue_brush.CreateSolidBrush(RGB(250, 245, 0));
dc.SelectObject(&blue_brush);
dc.FloodFill(150, 50, RGB(0,0,0));
////////////////
CBrush green_brush;
green_brush.CreateSolidBrush(RGB(0, 0, 250));
dc.SelectObject(&green_brush);
dc.FloodFill(500, 290, RGB(0,0,0));
//////////////
pen.CreatePen(20,20, RGB(0,0,0));
dc.SelectObject(&pen);
///////////////////B
dc.MoveTo(150,40);
dc.LineTo(150,240);
dc.LineTo(250,240);
dc.LineTo(250,180);
dc.MoveTo(150,140);
dc.LineTo(220,140);
dc.LineTo(250,100);
dc.MoveTo(220,140);
dc.LineTo(250,180);
dc.MoveTo(250,100);
dc.LineTo(250,40);
dc.LineTo(150,40);
//////////////////O
dc.MoveTo(300,40);
dc.LineTo(300,40);
dc.LineTo(300,240);
dc.LineTo(400,240);
dc.LineTo(400,40);
dc.LineTo(300,40);
/////////////////R
dc.MoveTo(450,40);
dc.LineTo(450,240);
dc.MoveTo(450,40);
dc.LineTo(550,40);
dc.LineTo(550,140);
dc.LineTo(450,140);
dc.LineTo(550,240);
////////////////L
dc.MoveTo(600,40);
dc.LineTo(600,240);
dc.LineTo(700,240);
/////////////////A
dc.MoveTo(750,40);
dc.LineTo(750,240);
dc.MoveTo(750,40);
dc.LineTo(850,40);
dc.LineTo(850,240);
dc.MoveTo(850,140);
dc.LineTo(750,140);
//////////////////N
dc.MoveTo(900,240);
dc.LineTo(900,40);
dc.LineTo(1000,240);
dc.LineTo(1000,40);
//////////////////D
dc.MoveTo(1050,40);
dc.LineTo(1050,240);
dc.LineTo(1100,240);
dc.LineTo(1150,200);
dc.LineTo(1150,80);
dc.LineTo(1100,40);
dc.LineTo(1050,40);
/////////////////////C++
ws.CreatePen(0,0, RGB(0,0,0));
dc.SelectObject(&ws);
///////////
dc.MoveTo(400,320);//////12
dc.LineTo(400,580);///////12
dc.MoveTo(510,280);///1
dc.LineTo(350,280);///1
dc.LineTo(350,620);//2
dc.LineTo(510,620);///3
dc.LineTo(510,560);//4
dc.LineTo(460,560);//5
dc.LineTo(460,580);//6
dc.LineTo(400,580);//7
dc.MoveTo(510,280);//8
dc.LineTo(510,340);//8
dc.LineTo(460,340);//9
dc.LineTo(460,320);//10
dc.LineTo(400,320);//11
///////////////////
dc.MoveTo(350,620);
dc.LineTo(370,640);
dc.LineTo(530,640);
dc.LineTo(530,580);
dc.LineTo(510,560);
////////////////////
CBrush bdf_brush;
bdf_brush.CreateSolidBrush(RGB(100, 100, 100));
dc.SelectObject(&bdf_brush);
dc.FloodFill(385, 635, RGB(0,0,0));
////////////
CBrush bAQ_brush;
bAQ_brush.CreateSolidBrush(RGB(400, 445, 0));
dc.SelectObject(&bAQ_brush);
dc.FloodFill(380, 310, RGB(0,0,0));
/////////////////////////////////
CBrush bAW_brush;
bAW_brush.CreateSolidBrush(RGB(400, 445, 0));
dc.SelectObject(&bAW_brush);
dc.FloodFill(371, 281, RGB(0,0,0));
/////////////////////////////
CBrush bAZ_brush;
bAZ_brush.CreateSolidBrush(RGB(400, 445, 0));
dc.SelectObject(&bAZ_brush);
dc.FloodFill(508, 588, RGB(0,0,0));
////////////////////
SD.CreatePen(0,0, RGB(0,0,0));
dc.SelectObject(&SD);
////////////
dc.MoveTo(660,300);//1
dc.LineTo(760,300);//1
dc.LineTo(760,400);//2
dc.LineTo(860,400);//3
dc.LineTo(860,500);//4
dc.LineTo(760,500);//5
dc.LineTo(760,600);//6
dc.LineTo(660,600);//7
dc.LineTo(660,500);//8
dc.LineTo(560,500);//9
dc.LineTo(560,400);//10
dc.LineTo(660,400);//11
dc.LineTo(660,300);//12
///////////
dc.MoveTo(660,600);
dc.LineTo(680,620);
dc.LineTo(780,620);
dc.LineTo(780,520);
dc.LineTo(860,520);
dc.LineTo(860,500);
/////////////
CBrush blda_brush;
blda_brush.CreateSolidBrush(RGB(100, 100, 100));
dc.SelectObject(&blda_brush);
dc.FloodFill(700,610, RGB(0,0,0));
///////////////
CBrush bldaW_brush;
bldaW_brush.CreateSolidBrush(RGB(100, 100, 100));
dc.SelectObject(&bldaW_brush);
dc.FloodFill(800,510, RGB(0,0,0));
//////////////////
CBrush bldaw_brush;
bldaw_brush.CreateSolidBrush(RGB(400, 445, 0));
dc.SelectObject(&bldaw_brush);
dc.FloodFill(679,598, RGB(0,0,0));
/////////
CBrush b_brush;
b_brush.CreateSolidBrush(RGB(400, 445, 0));
dc.SelectObject(&b_brush);
dc.FloodFill(670, 310, RGB(0,0,0));
///////////////
dc.MoveTo(880,400);//1
dc.LineTo(880,500);//1
dc.LineTo(980,500);//2
dc.LineTo(980,600);//3
dc.LineTo(1080,600);//4
dc.LineTo(1080,500);//5
dc.LineTo(1180,500);//6
dc.LineTo(1180,400);//7
dc.LineTo(1080,400);//8
dc.LineTo(1080,300);//9
dc.LineTo(980,300);//10
dc.LineTo(980,400);//11
dc.LineTo(880,400);//12
dc.MoveTo(980,600);
dc.LineTo(1000,620);
dc.LineTo(1100,620);
dc.LineTo(1100,520);
dc.LineTo(1180,520);
dc.LineTo(1180,500);
CBrush bldas_brush;
bldas_brush.CreateSolidBrush(RGB(100, 100, 100));
dc.SelectObject(&bldas_brush);
dc.FloodFill(1000,610, RGB(0,0,0));
CBrush ba_brush;
ba_brush.CreateSolidBrush(RGB(400, 445, 0));
dc.SelectObject(&b_brush);
dc.FloodFill(1150, 450, RGB(0,0,0));
CBrush bas_brush;
bas_brush.CreateSolidBrush(RGB(400, 445, 0));
dc.SelectObject(&bas_brush);
dc.FloodFill(900, 450, RGB(0,0,0));
}
Результат програми
/
Висновок: під час лабораторної роботи я вивчив функції для управління кольорами та стилями графічних зображень та навчитися складати програми на алгоритмічній мові C++ для побудови різноманітних графічних зображень.