Міністерство освіти і науки, молоді та спорту України
Національний університет «Львівська політехніка»
Звіт
лабораторної роботи № 3
з курсу «Програмування комп’ютерної графіки»
Мета: вивчити функції для управління кольорами та стилями графічних зображень, навчитися складати програми на алгоритмічній мові С++ для побудови різноманітних графічних зображень в середовищі Microsoft Visual Studio C++ 2008.
Завдання:
Домашня підготовка до роботи.
Вивчити основні графічні процедури і функції алгоритмічної мови для побудови кольорових графічних зображень.
Написати програму на алгоритмічній мові С++, яка виводить на екран розмальоване графічне зображення. Варіанти завдань брати за вказівкою викладача з таблиці 1.
Робота в лабораторії.
Ввести в комп’ютер програму написану на мові С++ згідно з отриманим завданням.
Здійснити відлагодження введеної програми, виправивши виявлені компілятором помилки.
Виконати програму. Текст відлагодженої програми та отримані результати оформити в звіт по лабораторній роботі.
Таблиця 1.
№ п/п
Варіанти завдань
№ п/п
Варіанти завдань
1.
/
2
/
3.
/
4.
/
5.
/
6.
/
7.
/
8.
/
Зміст звіту:
Повний текст завдання.
Блок-схема алгоритму програми.
Список ідентифікаторів констант, змінних, процедур і функцій, використовуваних в програмі та їх пояснення.
Остаточно відлагоджений текст програми згідно з отриманим завданням.
Результат виконання програми.
2. Блок-схема алгоритму програми.
Рис. 1
/
/
3. Список ідентифікаторів констант, змінних, процедур і функцій, використовуваних в програмі та їх пояснення.
k_brush – пензель;
bpen – чорне перо товщино 1 рх;
hPen – перо товщиною 3 рх;
CBrush – функція для створення пензля;
CPen – функція для створення пера;
Arc – малює дугу еліпса;
LineTo – проводить лінію з поточної вершини до точки, координати якої задані;
MoveToEx – переміщує поточну вершину;
AngleArc – малює дугу кола;
FloodFill – зафарбовує замкнуту область;
SelectObject – вибирає потрібний пензль або перо;
DeleteObject - видаляє потрібний пензль або перо;
CreateSolidBrush – ініціалізує суцільний пензель.
4. Остаточно відлагоджений текст програми згідно з отриманим завданням.
// ChildView.cpp : implementation of the CChildView class
#include "stdafx.h"
#include "lr1.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); // device context for painting
CBrush k_brush;
CPen bpen;
HPEN hPen = CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
HGDIOBJ hOldPen = SelectObject(dc, hPen);
//2 кола - початок
Arc(dc, 100, 100, 300, 300, 210, 100, 200, 300);
Arc(dc, 175, 175, 225, 225, 200, 175, 200, 225);
//2 кола - кінець
//великий прямокутник - початок
MoveToEx(dc, 200, 175, 0);
LineTo(dc, 230, 175);
LineTo(dc, 230, 195);
LineTo(dc, 270, 195);
LineTo(dc, 270, 175);
LineTo(dc, 300, 175);
LineTo(dc, 300, 300);
LineTo(dc, 200, 300);
LineTo(dc, 200, 175);
MoveToEx(dc, 200, 175, 0);
LineTo(dc, 210, 165);
//великий прямокутник - кінець
//малий прямокутник - початок
MoveToEx(dc, 210, 185, 0);
LineTo(dc, 230, 185);
MoveToEx(dc, 270, 185, 0);
LineTo(dc, 290, 185);
LineTo(dc, 290, 290);
LineTo(dc, 210, 290);
LineTo(dc, 210, 185);
//малий прямокутник - кінець
//бокова стінка - початок
MoveToEx(dc, 300, 175, 0);
LineTo(dc, 325, 150);
LineTo(dc, 325, 275);
LineTo(dc, 300, 300);
MoveToEx(dc,...