МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Звіт
про виконання лабораторної роботи №3
з курсу
“ Програмування комп’ютерної графіки”
Львів – 2011
Мета роботи
Вивчити функції для управління кольорами та стилями графічних зображень. Навчитися складати програми на алгоритмічні мові с++ для побудови різноманітних графічних зображень в середовищі Microsoft Visual Studio 2008
ЗАВДАННЯ
Вивчити основні графічні процедури і функції алгоритмів для побудови кольорових графічних зображень.
Написати програму на алгоритмічні мові С++ яка виводить на екран розмальоване графічне зображення.
Таблиця 1
3.
/
Список змінних, які використовуються в коді програми, та їх пояснення:
dc.MoveTo(int x, int y)- переміщує поточну вершину. x,y визначають координати нової поточної вершини. Повертає x- та y-координати попередньої поточної вершини як CPoint об'єкт.
dc.LineTo(int x, int y)-малює лінію з поточної вершини до вершини з координатами x, y. Поточна вершина переміщується у вершину з коордиатами x, y. При успішному виконанні функції повертає TRUE, інакше FALSE.
Блок-схема алгоритму програми:
Остаточна версія програми:
// ChildView.cpp : implementation of the CChildView class
//
#include "stdafx.h"
#include "LAB 3.h"
#include "ChildView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CChildView
CChildView::CChildView()
{
}
CChildView::~CChildView()
{
}
BEGIN_MESSAGE_MAP(CChildView, CWnd)
ON_WM_PAINT()
END_MESSAGE_MAP()
// CChildView message handlers
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);
// контур
dc.MoveTo (75,300);
dc.LineTo (300,300);
dc.LineTo (300,270);
dc.LineTo (290,270);
dc.LineTo (290,240);
dc.LineTo (280,240);
dc.LineTo (280,230);
dc.LineTo (285,230);
dc.LineTo (285,225);
dc.LineTo (280,225);
dc.LineTo (280,195);
dc.LineTo (290,195);
dc.LineTo (290,155);
dc.LineTo (300,155);
dc.LineTo (300,125);
dc.LineTo (290,125);
dc.LineTo (290,120);
dc.LineTo (285,120);
dc.LineTo (285,125);
dc.LineTo (265,125);
dc.LineTo (260,120);
dc.LineTo (250,120);
dc.LineTo (250,100);
dc.LineTo (240,100);
dc.LineTo (235,95);
dc.LineTo (215,95);
dc.LineTo (210,100);
dc.LineTo (205,100);
dc.LineTo (205,115);
dc.LineTo (175,115);
dc.LineTo (175,120);
dc.LineTo (165,120);
dc.LineTo (165,125);
dc.LineTo (160,125);
dc.LineTo (160,130);
dc.LineTo (155,130);
dc.LineTo (155,135);
dc.LineTo (150,135);
dc.LineTo (150,145);
dc.LineTo (130,145);
dc.LineTo (130,150);
dc.LineTo (90,150);
dc.LineTo (85,160);
dc.LineTo (80,160);
dc.LineTo (80,180);
dc.LineTo (90,180);
dc.LineTo (90,200);
dc.LineTo (100,200);
dc.LineTo (100,210);
dc.LineTo (110,210);
dc.LineTo (110,215);
dc.LineTo (115,215);
dc.LineTo (115,220);
dc.LineTo (125,220);
dc.LineTo (125,230);
dc.LineTo (135,230);
dc.LineTo (135,245);
dc.LineTo (145,245);
dc.LineTo (145,260);
dc.LineTo (100,260);
dc.LineTo (100,265);
dc.LineTo (85,265);
dc.LineTo (85,290);
dc.LineTo (75,290);
dc.LineTo (75,300);
//рот
dc.MoveTo (100,210);
dc.LineTo (140,210);
dc.LineTo (140,215);
dc.LineTo (110,215);
//ніс
dc.MoveTo (80,180);
dc.LineTo (100,180);
dc.LineTo (100,170);
dc.LineTo (105,170);
dc.LineTo (105,165);
dc.LineTo (100,165);
dc.LineTo (100,155);
//лице
dc.MoveTo (135,230);
dc.LineTo (165,230);
dc.LineTo (165,225);
dc.LineTo (170,225);
dc.LineTo (170,210);
dc.LineTo (175,210);
dc.LineTo (175,200);
dc.LineTo (180,200);
dc.LineTo (180,195);
dc.LineTo (185,195);
dc.LineTo (185,190);
dc.LineTo (180,190);
dc.LineTo (180,180);
dc.LineTo (175,180);
dc.LineTo (175,175);
dc.LineTo (180,175);
dc.LineTo (180,160);
dc.LineTo (200,160);
dc.LineTo (200,130);
dc.LineTo (180,130);
dc.LineTo (180,140);
dc.LineTo (190,140);
dc.LineTo (190,150);
dc.LineTo (180,150);
dc.LineTo (180,160);
dc.MoveTo (170,150);
dc.LineTo (170,150);
dc.LineTo (170,130);
dc.LineTo (150,140);
dc.LineTo (170,150);
dc.MoveTo (180,150);
dc.LineTo (130,150);
dc.MoveTo (130,150);
dc.LineTo (130,155);
dc.LineTo (100,155);
//замальовую
CBrush green_brush;
green_brush. CreateSolidBrush(RGB(255,165,0));
dc.SelectObject(&green_brush);
dc.FloodFill(int (78), int (295),RGB(0,0,0));
}
Результат роботи програми:
Висновок: при виконанні даної роботи я вивчив функції для управління кольорами та стилями графічних зображень. Навчився складати програми на алгоритмічні мові с++ для побудови різноманітних графічних зображень в середовищі Microsoft Visual Studio 2008
.