Міністерство освіти і науки України
Національний університет “Львівська політехніка”
УПРАВЛІННЯ КОЛЬОРАМИ ТА СТИЛЯМИ ГРАФІЧНИХ ЗОБРАЖЕНЬ В СЕРЕДОВИЩІ MICROSOFT VISUAL STUDIO C++ 2008
Лабораторна робота №3
з курсу «Програмування комп’ютерної графіки»
Варіант №17
Львів 2014
Мета роботи: вивчити функції для управління кольорами та стилями графічних зображень; навчитися складати програми на алгоритмічній мові С++ для побудови різноманітних графічних зображень в середовищі Microsoft Visual Studio C++ 2008.
ЗАВДАННЯ
Написати програму на алгоритмічній мові С++, яка виводить на екран розмальоване графічне зображення. Варіант завдання береться згідно з вказівкою викладача з таблиці 1.
Таблиця 1. Завдання до лабораторної роботи
N% п/п
Варіанти завдань
10.
/
Список змінних, які використовуються в коді програми, та їх пояснення:
dc.MoveTo() – переносить курсор у задану точку;
dc.LineTo() – будує лінію до заданої точки;
CBrush br;
br.CreateSolidBrush(RGB(0,0,0));
dc.SelectObject(&br); - Створення та використання користувацького пера;
dc.FloodFill(x, y, Color); - замальовує область екрану поточним пензлем х,у – координати точки всередині замкнутої області; Color – колір межі до якої буде здійснюватися замалювання;
dc.SelectStockObject(Color); - перо , Color – колір пера;
dc.Rectangle() – малює прямокутник.
Блок-схема програми:
1
2
3
4
5
6
7
8
10
Остаточна версія програми:
// ChildView.cpp : реализация класса CChildView
//
#include "stdafx.h"
#include "ChildView.h"
#include <conio.h>
#include <vector>
#include<iostream>
#include <math.h>
#include <fstream>
using namespace std;
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CChildView
CChildView::CChildView()
{
}
CChildView::~CChildView()
{
}
BEGIN_MESSAGE_MAP(CChildView, CWnd)
ON_WM_PAINT()
END_MESSAGE_MAP()
// обработчики сообщений CChildView
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 br;
CPen pen;
pen.CreatePen(PS_SOLID,2,RGB(0,0,0));
dc.SelectObject(&pen);
dc.MoveTo(9,130);//дах
dc.LineTo(144,26);
dc.LineTo(279,130);
br.DeleteObject();
pen.DeleteObject();
pen.CreatePen(PS_SOLID,5,RGB(0,0,0));
dc.SelectObject(&pen);
dc.Rectangle(38,107,250,230);//основа
dc.Rectangle(60,125,100,200);//ліве вікно
dc.MoveTo(63,146);
dc.LineTo(96,146);
dc.MoveTo(63,171);
dc.LineTo(96,171);
dc.MoveTo(80,128);
dc.LineTo(80,196);
dc.Rectangle(185,125,225,200);//праве вікно
dc.MoveTo(188,146);
dc.LineTo(221,146);
dc.MoveTo(188,171);
dc.LineTo(221,171);
dc.MoveTo(205,128);
dc.LineTo(205,196);
dc.Rectangle(125,145,165,230);//двері
dc.MoveTo(9,130);//дах
dc.LineTo(68,84);
dc.MoveTo(95,62);
dc.LineTo(144,26);
dc.LineTo(170,42);
dc.MoveTo(189,58);
dc.LineTo(279,130);
br.DeleteObject();
pen.DeleteObject();
br.CreateSolidBrush(RGB(255,255,0));//основа
dc.SelectObject(&br);
dc.FloodFill(100,215,RGB(0,0,0));
br.DeleteObject();
br.CreateSolidBrush(RGB(232,134,36));//двері
dc.SelectObject(&br);
dc.FloodFill(144,216,RGB(0,0,0));
br.DeleteObject();
br.CreateSolidBrush(RGB(236,99,45));//дах
dc.SelectObject(&br);
dc.FloodFill(180,100,RGB(0,0,0));
br.DeleteObject();
pen.CreatePen(PS_SOLID,3,RGB(249,239,98));//двері
dc.SelectObject(&pen);
dc.MoveTo(130,148);
dc.LineTo(160,168);
dc.MoveTo(160,148);
dc.LineTo(130,168);
dc.MoveTo(130,168);
dc.LineTo(160,188);
dc.MoveTo(160,168);
dc.LineTo(130,188);
dc.MoveTo(130,200);
dc.LineTo(160,220);
dc.MoveTo(160,200);
dc.LineTo(130,220);
br.DeleteObject();
pen.DeleteObject();
pen.CreatePen(PS_SOLID,5,RGB(249,239,98));//черепиця
dc.SelectObject(&pen);
dc.MoveTo(73,100);
dc.LineTo(100,78);
dc.LineTo(110,86);
dc.MoveTo(116,69);
dc.LineTo(137,49);
dc.MoveTo(118,51);
dc.LineTo(125,59);
dc.MoveTo(125,84);
dc.LineTo(144,68);
dc.LineTo(160,84);
dc.LineTo(180,68);
dc.LineTo(198,84);
dc.MoveTo(152,76);
dc.LineTo(161,68);
dc.LineTo(171,75);
dc.MoveTo(152,41);
dc.LineTo(164,52);
dc.MoveTo(213,90);
dc.LineTo(225,100);
dc.MoveTo(98,100);
dc.LineTo(105,95);
dc.MoveTo(118,100);
dc.LineTo(125,95);
dc.MoveTo(158,100);
dc.LineTo(165,95);
dc.MoveTo(198,100);
dc.LineTo(205,95);
dc.MoveTo(134,100);
dc.LineTo(146,90);
br.DeleteObject();
pen.DeleteObject();
}
Результат роботи програми:
/
Висновок:
На даній лабораторній роботі я вивчив основні функції управління кольорами та стилями графічних зображень.