Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2011
Тип роботи:
Звіт
Предмет:
Програмування комп’ютерної графіки

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки, молоді та спорту України Національний університет «Львівська політехніка» Звіт лабораторної роботи № 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, 325, 150, 0); LineTo(dc, 290, 150); //бокова стінка - кінець //кришка - початок MoveToEx(dc, 325, 150, 0); LineTo(dc, 325, 120); LineTo(dc, 208, 120); MoveToEx(dc, 220, 120, 0); LineTo(dc, 220, 125); MoveToEx(dc, 325, 120, 0); AngleArc(dc, 305, 120, 20, 0, 90); MoveToEx(dc, 305, 100, 0); LineTo(dc, 210, 100); AngleArc(dc, 210, 110, 10, 90, 180); //кришка - кінець //карта - початок MoveToEx(dc, 290, 135, 0); AngleArc(dc, 280, 135, 10, 0, 90); LineTo(dc, 220, 125); AngleArc(dc, 220, 135, 10, 90, 90); LineTo(dc, 210, 175); MoveToEx(dc, 290, 135, 0); LineTo(dc, 290, 175); MoveToEx(dc, 230, 135, 0); LineTo(dc, 220, 150); LineTo(dc, 230, 165); LineTo(dc, 240, 150); LineTo(dc, 230, 135); MoveToEx(dc, 270, 135, 0); LineTo(dc, 260, 150); LineTo(dc, 270, 165); LineTo(dc, 280, 150); LineTo(dc, 270, 135); MoveToEx(dc, 250, 160, 0); LineTo(dc, 270, 190); MoveToEx(dc, 250, 160, 0); LineTo(dc, 230, 190); SelectObject(dc, hOldPen); DeleteObject(hPen); //карта - кінець //Розбивка діска MoveToEx(dc, 174, 200, 0); //Фіолетовий LineTo(dc, 101, 200); MoveToEx(dc, 177, 195, 0); //салат LineTo(dc, 102, 184); MoveToEx(dc, 180, 188, 0); //голубий LineTo(dc, 110, 159); MoveToEx(dc, 182, 184, 0); //с.голубий LineTo(dc, 116, 140); MoveToEx(dc, 183, 180, 0); //темно зелений LineTo(dc, 127, 128); MoveToEx(dc, 188, 175, 0); //білий LineTo(dc, 160, 110); MoveToEx(dc, 197, 175, 0); //сірий LineTo(dc, 187, 102); MoveToEx(dc, 183, 220, 0);// білий внизу 1 LineTo(dc, 127, 270); MoveToEx(dc, 193, 223, 0); // білий внизу 2 LineTo(dc, 160, 290); //Розкраска діска k_brush.CreateSolidBrush(RGB(193,0,255)); dc.SelectObject(&k_brush); dc.FloodFill(150,197,RGB(0,0,0)); k_brush.DeleteObject(); k_brush.CreateSolidBrush(RGB(156,255,0)); dc.SelectObject(&k_brush); dc.FloodFill(120,165,RGB(0,0,0)); k_brush.DeleteObject(); k_brush.CreateSolidBrush(RGB(157,255,252)); dc.SelectObject(&k_brush); dc.FloodFill(120,145,RGB(0,0,0)); k_brush.DeleteObject(); k_brush.CreateSolidBrush(RGB(222,254,253)); dc.SelectObject(&k_brush); dc.FloodFill(182,180,RGB(0,0,0)); k_brush.DeleteObject(); k_brush.CreateSolidBrush(RGB(0,116,87)); dc.SelectObject(&k_brush); dc.FloodFill(185,178,RGB(0,0,0)); k_brush.DeleteObject(); k_brush.CreateSolidBrush(RGB(0,255,0)); dc.SelectObject(&k_brush); dc.FloodFill(188,170,RGB(0,0,0)); k_brush.DeleteObject(); //Розбивка диска //замальовка k_brush.CreateSolidBrush(RGB(255,0,0));//колір на карті dc.SelectObject(&k_brush); dc.FloodFill(250,170,RGB(0,0,0)); dc.FloodFill(270,140,RGB(0,0,0)); dc.FloodFill(230,140,RGB(0,0,0)); k_brush.DeleteObject(); //Диск k_brush.CreateSolidBrush(RGB(215,215,215)); dc.SelectObject(&k_brush); dc.FloodFill(160,205,RGB(0,0,0)); dc.FloodFill(195,295,RGB(0,0,0)); dc.FloodFill(200,150,RGB(0,0,0)); k_brush.DeleteObject(); //Корбка k_brush.CreateSolidBrush(RGB(0,0,255)); dc.SelectObject(&k_brush); dc.FloodFill(285,285,RGB(0,0,0)); k_brush.DeleteObject(); k_brush.CreateSolidBrush(RGB(140,140,140)); dc.SelectObject(&k_brush); dc.FloodFill(205,225,RGB(0,0,0)); k_brush.DeleteObject(); k_brush.CreateSolidBrush(RGB(170,170,170)); dc.SelectObject(&k_brush); dc.FloodFill(315,165,RGB(0,0,0)); k_brush.DeleteObject(); k_brush.CreateSolidBrush(RGB(240,240,240)); dc.SelectObject(&k_brush); dc.FloodFill(320,115,RGB(0,0,0)); dc.FloodFill(320,125,RGB(0,0,0)); k_brush.DeleteObject(); k_brush.CreateSolidBrush(RGB(220,220,220)); dc.SelectObject(&k_brush); dc.FloodFill(315,155,RGB(0,0,0)); dc.FloodFill(203,172,RGB(0,0,0)); k_brush.DeleteObject(); } 5. Результат виконання програми. Рис. 2 /
Антиботан аватар за замовчуванням

30.11.2012 15:11-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!