Автор работы: Пользователь скрыл имя, 27 Февраля 2011 в 18:18, курсовая работа
Разработатка программы для построения изображения фигуры, приведенной на рисунке. Исходные данные (x1,y1,R1,x2,y2,r2,x3,y3,r3) должны быть считаны из выбранного пользователем файла. Осуществлять проверку исходных данных на соответствие варианту (две окружности находятся внутри третьей).
1. Постановка задачи и исходные данные….………………….…………………..…3
2. Математическое обеспечение ……………………………………..…………….…4
3. Описание работы программы и полученные результаты при решении поставленной задачи ….………………………………………...………..……..……..5
4. Разработка алгоритма программы в виде блок-схемы……………………...…….8
5. Краткое описание возможностей среды программирования
Microsoft Visual C++………..………….………………………………...…………….9
6. Выводы………………………………….……………………….…………….……14
7. Список используемой литературы…….…………………………………………..15
8. Приложение А………………….…………………………………………….……..16
CClientDC
– объекты этого класса обеспечивают
доступ к клиентской части окна. Используется
для графического вывода в любой функции.
При создании объекта класса CClientDC в конструкторе
вызывается функция Win32 API GetDC, а при разрушении,
в деструкторе – ReleaseDC, также из Win32 API,
обеспечивая необходимые операции для
подготовки и завершения процесса графического
вывода именно и только в клиентскую часть
окна. За создание объекта класса CClientDC
отвечает разработчик приложения.
Графические объекты
Настройка параметров графического вывода проводится двумя путями. Одни параметры настраиваются при помощи вызова функций Win32 API или функций-членов класса CDC и производных от него, другие – путем замены так называемых графических объектов. Библиотека MFC обеспечивает разработчиков всеми необходимыми классами, которые инкапсулируют соответствующие графические объекты Windows. Кроме того, библиотека имеет в своем составе дополнительные классы, значительно облегчающие решение ряда задач (к примеру классы CPoint и CRect).
CPen – инкапсулирует объект Windows «карандаш», который может быть выбран (назначен) в контекст устройства и использоваться для определения типа и цвета линий и границ фигур.
CBrush – Инкапсулирует объект Windows «кисть», который может быть выбран (назначен) в контекст устройства и использоваться для определения типа и цвета заливки внутренних областей замкнутых фигур.
Создать объекты CPen и CBrush можно двумя способами:
1. Конструктор используется как для создания собственно объекта, так и для его инициализации.
2.
Помимо использования
Второй
способ предпочтительнее, т.к. невозможность
инициализации, например, в случае исчерпания
соответствующих системных ресурсов,
легче определить при вызове именно функции
инициализации. В противном случае для
гарантии защиты от ошибок, вернее, для
их своевременного обнаружения потребуется
механизм обработки исключений.
Настройка режимов отображения
Функции этой группы устанавливают и настраивают систему координат, которая используется всеми функциями вывода – координаты вывода задаются именно в логических единицах. Кроме единиц по осям X и Y, функции этой группы задают направление осей и начало координат. Практически все функции группы реализованы парами. Функции с префиксом Get позволяют получить текущее значение параметра, а с префиксом Set устанавливают новое значение и возвращают предыдущее. По умолчанию начало координат находится в левом верхнем углу области вывода, (прежде всего окна). При этом ось X направлена слева направо, а ось Y – сверху вниз. Единица измерения – один пиксель (режим MM_TEXT). Кстати сказать, именно поэтому на различных устройствах, вследствие различий в размерах пикселя, фактический (визуальный) размер по оси X может не соответствовать размеру по оси Y.
Для настройки системы координат в Windows используются два понятия – физическая область вывода (viewport), координаты и размеры которой задаются в физических единицах – пикселях, и логическая область вывода (window), координаты и размеры которой задаются в логических единицах, определяемых размером рисования.
И физическая и логическая области вывода характеризуются точкой, определяющей начало координат. Для настройки начала координат физической области вывода используются функции:
virtual CPoint CDC::SetViewportOrg(int x, int y) или
virtual CPoint CDC::SetViewportOrg(POINT point)
Для настройки логической области вывода используются следующие функции:
CPoint CDC::SetWindowOrg(int x, int y) или
CPoint CDC::SetWindowOrg(POINT point)
Все четыре функции в качестве параметров получают новые значения для установки начала координат, а возвращают предыдущие значения. Здесь есть одна тонкость: если для физической области вывода указываются координаты, которые в дальнейшем будут являться началом координат, то для логической области вывода указываются логические координаты, которые в дальнейшем будут соответствовать левому верхнему углу логической области вывода.
Из
вышесказанного следует, что есть смысл
настраивать начало координатной сетки
только для одной из областей, т.к
система координат логической области
вывода относительна системе координат
физической области.
Рисование линий
Функции этой группы предназначены для рисования прямых (LineTo), гладких (Arc, ArcTo) и ломаных линий (Polyline, PolylineTo), установленным на момент рисования карандашом. Часть функций меняют при этом текущее положение карандаша, другие – нет. Даже если в результате рисования контур получается замкнутым, закрашивание не осуществляется.
Класс CFileDialog
Этот класс отвечает за создание и работоспособность двух блоков диалога: один позволяет выбрать файл для его последующего открытия, а другой предназначен для выбора места расположения и имени файла при его сохранении.
Ниже описаны некоторые основные функции класса.
CFileDialog::CFileDialog(
LPCTSTR lpszDefExt = NULL,
LPCTSTR lpszFileName = NULL,
DWORD
dwFlags = OFN_HIDEREADONLY|OFN_
LPCSTR lpszFilter = NULL,
CWnd *pParentWnd = NULL) – конструктор класса, создает объект «стандартный блок диалога».
Если параметр bOpenFileDialog равен TRUE, создается объект «блок диалога File Open (Открытие файла)» и объект «блок диалога File Save As (Сохранение файла)», если bOpenFileDialog равен FALSE.
virtual int CFileDialog::DoModal() – вызов этой функции выводит на экран модальный стандартный блок диалога для открытия или сохранения файла. При успешном завершении функция возвращает IDOK или IDCANCEL в зависимости от того, при помощи какой кнопки пользователь закрыл блок диалога.
Для того чтобы получить имя файла, определенное пользователем в блоке диалога, в классе реализованы несколько функций:
virtual CString CFileDialog::GetPathName() – возвращает полное имя файла, включая путь.
virtual CString CFileDialog::GetFileName() – возвращает имя файла с расширением.
virtual CString CFileDialog::GetFileExt() – возвращает расширение имени файла.
virtual
CString CFileDialog::GetFileTitle() – возвращает имя
файла без расширения.
Выводы
В ходе выполнения курсовой работы были получены основы разработки Windows – приложений с использованием MFС. Был освоен объектно-ориентированный язык программирования Visual C++.
В
результате работы была написана программа,
которая строит изображение фигуры, приведенной
на рисунке 5. При исходных данных (x1, y1,R1,
x2, y2, r2, x3, y3, r3), которые должны быть считаны
из выбранного пользователем файла. Осуществил
проверку исходных данных на соответствие
варианту: две окружности находятся внутри
третьей.
Список
используемой литературы
1.
Шилдт Герберт «Полный
2.
Мешков А., Тихомиров Ю. «Visual C++ и MFC»
- СПб.:БХВ-Петербург. 2002 – 1017с.
3.
Карпов Б., Баранов Т. «С++: специальный
справочник» - СПб.: Питер, 2001. – 480 с.:ил.
4. Основы
Microsoft Visual Studio. Net 2003/ Пер. с англ. - М.:Издательство-
торговый дом "Русская редакция",
2003.-464 с: ил.
5. Круглински
Д., Уингоу С, Шеферд Дж. «Программирование
на Microsoft Visual C++ 6.0 для профессионалов»/Пер.
с англ.- СПб: Питер, М.:Издательсво- торговый
дом "Русская Редакция", 2004.- 861 с.:ил.
6.
Бьярн Страуструп « Введение в язык СИ++»,
1995
Приложение
А
CMyDlg.cpp
#include "stdafx.h"
#include "4ertejmfc.h"
#include
"4ertejmfcDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
CMyDlg::CMyDlg(CWnd* pParent /*=NULL*/) // конструктор класса, создает объект “стандартный блок
диалога”
: CDialog(CMyDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_
}
void
CMyDlg::DoDataExchange(
{
CDialog::
}
BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_SIZE()
ON_BN_CLICKED(IDC_
ON_BN_CLICKED(IDC_
END_MESSAGE_MAP()
//
обработчики сообщений
BOOL CMyDlg::OnInitDialog()
{
CDialog::
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small
icon
return TRUE;
}
void CMyDlg::OnPaint()
{
CPaintDC dc(this); // контекст
устройств для рисования
if (IsIconic())
{
SendMessage(WM_
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect; // объявили о создании объекта класса CRect
GetClientRect(&
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1)
/ 2;
dc.DrawIcon(x, y, m_hIcon); //рисование
}
else
{
k_Draw.Draw(&
}
}
HCURSOR CMyDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CMyDlg::OnBtnLoad()
{
CFileDialog fd(1, 0, 0, 4|2, _T("txt files (.txt)|*.txt|"), this); // CFileDialog fd(TRUE, ".txt", "ReadMe", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, Filter);
объявили о
создании объекта класса CFileDialog для
открытия файла
if(fd.DoModal() != IDOK)return;
k_filePath = fd.GetPathName(); // открыли файл, выбранный пользователем, на чтение
if(!k_Draw.
this->
this->RedrawWindow();
}
void CMyDlg::OnSize(UINT nType, int cx, int cy)