Міністерство освіти і науки, молоді та спорту України
Національний університет «Львівська політехніка»
Звіт
лабораторної роботи № 1
з курсу «Програмування комп’ютерної графіки»
Мета: Навчитися створювати проект з підтримкою MFC та вивчити основні графічні оператори бібліотеки GDI в середовищі Microsoft Visual Studio C++2008, набути практичних навиків в складанні програм для побудови геометричних зображень та графіків функцій.
Завдання:
Домашня підготовка до роботи.
Навчитися створювати робочий проект С++ в Microsoft Visual Studio.
Вивчити основні графічні функції бібліотеки GDI та CDI++ операційної системи Microsoft Windows для мови C++.
Написати програму на алгоритмічній мові С++, яка виводить на екран певне графічне зображення. Розміри, вказані в завданні, проставити на кресленні. Варіанти завдань брати за вказівкою викладача з таблиці 1.
Робота в лабораторії.
Ввести в комп’ютер програму написану на мові С++ згідно з отриманим завданням.
Здійснити відлагодження введеної програми, виправивши виявлені компілятором помилки.
Виконати програму. Текст відлагодженої програми та отримані результати оформити в звіт по лабораторній роботі.
Таблиця 1.
№ п/п
Варіанти завдань
8
Побудувати рівносторонній трикутник, в якого довжина сторони дорівнює 140 в вписати в нього коло.
Зміст звіту:
Повний текст завдання.
Блок-схема алгоритму програми.
Список ідентифікаторів констант, змінних, процедур і функцій, використовуваних в програмі та їх пояснення.
Остаточно відлагоджений текст програми згідно з отриманим завданням.
Результат виконання програми.
2. Блок-схема алгоритму програми.
Рис. 1
3. Список ідентифікаторів констант, змінних, процедур і функцій, використовуваних в програмі та їх пояснення.
hPen – перо товщиною 3 рх;
CreatePen – функція для створення пера;
LineTo – проводить лінію з поточної вершини до точки, координати якої задані;
MoveToEx – переміщує поточну вершину;
Ellipse – малює еліпс;
SelectObject – вибирає потрібний пензль або перо;
TextOutW – виводить текст;
CString rchar – оголошення змінної для виведення тексту;
DeleteObject - видаляє потрібний пензль або перо.
4. Остаточно відлагоджений текст програми згідно з отриманим завданням.
// ChildView.cpp : implementation of the CChildView class
//
#include "stdafx.h"
#include "lr1.h"
#include "ChildView.h"
#include <cmath>
#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
// TODO: Add your message handler code here
// Do not call CWnd::OnPaint() for painting messages
HPEN hPen = CreatePen(PS_SOLID, 3, RGB(0, 0, 128));
HGDIOBJ hOldPen = SelectObject(dc, hPen);
MoveToEx(dc, 80, 80, 0);
LineTo(dc, 10, 202);
LineTo(dc, 150, 202);
LineTo(dc, 80, 80);
Ellipse (dc, 40, 122, 120, 202);
SelectObject(dc, hOldPen);
DeleteObject(hPen);
MoveToEx(dc, 10, 202, 0);
LineTo(dc, 10, 225);
MoveToEx(dc, 150, 202, 0);
LineTo(dc, 150, 225);
MoveToEx(dc, 10, 220, 0);
LineTo(dc, 150, 220);
MoveToEx(dc, 10, 220, 0);
LineTo(dc, 16, 217);
MoveToEx(dc, 10, 220, 0);
LineTo(dc, 16, 223);
MoveToEx(dc, 150, 220, 0);
LineTo(dc, 144, 217);
MoveToEx(dc, 150, 220, 0);
LineTo(dc, 144, 223);
MoveToEx(dc, 111, 145, 0);
LineTo(dc, 121, 139);
MoveToEx(dc, 41, 139, 0);
LineTo(dc, 51, 145);
CString rchar("140");
dc.TextOutW (65,204,rchar);
MoveToEx(dc, 80, 196, 0);
LineTo(dc, 80, 207);
}
5. Результат виконання програми.
Рис. 2
/