Вам нужна курсовая работа?
Интересует Программирование?
Оставьте заявку
на Курсовую работу
Получите бесплатную
консультацию по
написанию
Сделайте заказ и
скачайте
результат на сайте
1
2
3

Графический редактор.

  • 40 страниц
  • 3 источника
  • Добавлена 08.07.2012
1 100 руб. 2 200 руб.
  • Содержание
  • Часть работы
  • Список литературы
  • Вопросы/Ответы
Содержание
Задание
1. Техническое задание на разработку графического редактора
2. Проектирование интерфейса пользователя
3. Описание алгоритмов, используемых для создания программного обеспечения
4. Тексты программных модулей
5. Скриншоты работы программного обеспечения по всем функциям, заложенным в техническом задании
6. Технические условия применения программного обеспечения и инструкция пользователя
Заключение
Список используемой литературы

Фрагмент для ознакомления

DeleteObject(); // заводим новое перо и прописываем его
m_Pen.CreatePen(PS_SOLID,m_PenWidth,m_PenColor); // в контекст
m_dcMem.SelectObject(&m_Pen);
}

void CMinipaintDlg::On2()
{
GetMenu()->CheckMenuItem(ID_1, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_2, MF_CHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_3, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_4, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_5, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_6, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_7, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_8, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_9, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_10, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_15, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_20, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_30, MF_UNCHECKED | MF_BYCOMMAND);
m_PenWidth=2;
m_Pen.DeleteObject();
m_Pen.CreatePen(PS_SOLID,m_PenWidth,m_PenColor);
m_dcMem.SelectObject(&m_Pen);
}

void CMinipaintDlg::On3()
{
GetMenu()->CheckMenuItem(ID_1, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_2, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_3, MF_CHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_4, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_5, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_6, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_7, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_8, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_9, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_10, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_15, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_20, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_30, MF_UNCHECKED | MF_BYCOMMAND);
m_PenWidth=3;
m_Pen.DeleteObject();
m_Pen.CreatePen(PS_SOLID,m_PenWidth,m_PenColor);
m_dcMem.SelectObject(&m_Pen);
}

void CMinipaintDlg::On4()
{
GetMenu()->CheckMenuItem(ID_1, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_2, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_3, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_4, MF_CHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_5, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_6, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_7, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_8, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_9, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_10, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_15, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_20, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_30, MF_UNCHECKED | MF_BYCOMMAND);
m_PenWidth=4;
m_Pen.DeleteObject();
m_Pen.CreatePen(PS_SOLID,m_PenWidth,m_PenColor);
m_dcMem.SelectObject(&m_Pen);
}

void CMinipaintDlg::On5()
{
GetMenu()->CheckMenuItem(ID_1, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_2, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_3, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_4, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_5, MF_CHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_6, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_7, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_8, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_9, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_10, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_15, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_20, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_30, MF_UNCHECKED | MF_BYCOMMAND);
m_PenWidth=5;
m_Pen.DeleteObject();
m_Pen.CreatePen(PS_SOLID,m_PenWidth,m_PenColor);
m_dcMem.SelectObject(&m_Pen);
}

void CMinipaintDlg::On6()
{
GetMenu()->CheckMenuItem(ID_1, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_2, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_3, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_4, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_5, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_6, MF_CHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_7, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_8, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_9, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_10, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_15, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_20, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_30, MF_UNCHECKED | MF_BYCOMMAND);
m_PenWidth=6;
m_Pen.DeleteObject();
m_Pen.CreatePen(PS_SOLID,m_PenWidth,m_PenColor);
m_dcMem.SelectObject(&m_Pen);
}

void CMinipaintDlg::On7()
{
GetMenu()->CheckMenuItem(ID_1, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_2, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_3, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_4, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_5, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_6, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_7, MF_CHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_8, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_9, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_10, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_15, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_20, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_30, MF_UNCHECKED | MF_BYCOMMAND);
m_PenWidth=7;
m_Pen.DeleteObject();
m_Pen.CreatePen(PS_SOLID,m_PenWidth,m_PenColor);
m_dcMem.SelectObject(&m_Pen);
}

void CMinipaintDlg::On8()
{
GetMenu()->CheckMenuItem(ID_1, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_2, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_3, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_4, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_5, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_6, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_7, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_8, MF_CHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_9, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_10, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_15, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_20, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_30, MF_UNCHECKED | MF_BYCOMMAND);
m_PenWidth=8;
m_Pen.DeleteObject();
m_Pen.CreatePen(PS_SOLID,m_PenWidth,m_PenColor);
m_dcMem.SelectObject(&m_Pen);
}

void CMinipaintDlg::On9()
{
GetMenu()->CheckMenuItem(ID_1, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_2, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_3, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_4, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_5, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_6, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_7, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_8, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_9, MF_CHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_10, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_15, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_20, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_30, MF_UNCHECKED | MF_BYCOMMAND);
m_PenWidth=9;
m_Pen.DeleteObject();
m_Pen.CreatePen(PS_SOLID,m_PenWidth,m_PenColor);
m_dcMem.SelectObject(&m_Pen);
}

void CMinipaintDlg::On10()
{
GetMenu()->CheckMenuItem(ID_1, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_2, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_3, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_4, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_5, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_6, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_7, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_8, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_9, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_10, MF_CHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_15, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_20, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_30, MF_UNCHECKED | MF_BYCOMMAND);
m_PenWidth=10;
m_Pen.DeleteObject();
m_Pen.CreatePen(PS_SOLID,m_PenWidth,m_PenColor);
m_dcMem.SelectObject(&m_Pen);
}

void CMinipaintDlg::On15()
{
GetMenu()->CheckMenuItem(ID_1, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_2, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_3, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_4, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_5, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_6, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_7, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_8, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_9, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_10, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_15, MF_CHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_20, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_30, MF_UNCHECKED | MF_BYCOMMAND);
m_PenWidth=15;
m_Pen.DeleteObject();
m_Pen.CreatePen(PS_SOLID,m_PenWidth,m_PenColor);
m_dcMem.SelectObject(&m_Pen);
}

void CMinipaintDlg::On20()
{
GetMenu()->CheckMenuItem(ID_1, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_2, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_3, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_4, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_5, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_6, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_7, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_8, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_9, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_10, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_15, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_20, MF_CHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_30, MF_UNCHECKED | MF_BYCOMMAND);
m_PenWidth=20;
m_Pen.DeleteObject();
m_Pen.CreatePen(PS_SOLID,m_PenWidth,m_PenColor);
m_dcMem.SelectObject(&m_Pen);
}

void CMinipaintDlg::On30()
{
GetMenu()->CheckMenuItem(ID_1, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_2, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_3, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_4, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_5, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_6, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_7, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_8, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_9, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_10, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_15, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_20, MF_UNCHECKED | MF_BYCOMMAND);
GetMenu()->CheckMenuItem(ID_30, MF_CHECKED | MF_BYCOMMAND);
m_PenWidth=30;
m_Pen.DeleteObject();
m_Pen.CreatePen(PS_SOLID,m_PenWidth,m_PenColor);
m_dcMem.SelectObject(&m_Pen);
}

void CMinipaintDlg::OnPencolor()
{ // выбор цвета пера
CColorDialog clrDlg; // подготавливаем диалог выбора цвета
clrDlg.m_cc.lStructSize=sizeof(clrDlg.m_cc);
clrDlg.m_cc.rgbResult=m_PenColor; // устанавливаем исходный цвет
if(m_addColors != NULL) // если пользовательские цвета сохранялись
clrDlg.m_cc.lpCustColors=m_addColors; // восстанавливаем их
clrDlg.m_cc.Flags=CC_ENABLEHOOK | CC_FULLOPEN | CC_RGBINIT;
if(clrDlg.DoModal() == IDOK){ // диалог закончился нажатием ОК
m_addColors=clrDlg.GetSavedCustomColors(); // сохраняем пользовательские цвета
m_PenColor=clrDlg.GetColor(); // фиксируем выбранный цвет
UpdateMenuBmp(penColor,m_PenColor); // обновляем индикатор
m_Pen.DeleteObject(); // создаем новое перо
m_Pen.CreatePen(PS_SOLID,m_PenWidth,m_PenColor);
m_dcMem.SelectObject(&m_Pen); // и прописываем его в контекст
}
}

void CMinipaintDlg::OnBrushcolor()
{
CColorDialog clrDlg; // подготавливаем диалог выбора цвета
clrDlg.m_cc.lStructSize=sizeof(clrDlg.m_cc);
clrDlg.m_cc.rgbResult=m_BrushColor; // устанавливаем исходный цвет
if(m_addColors != NULL) // если пользовательские цвета сохранялись
clrDlg.m_cc.lpCustColors=m_addColors; // восстанавливаем их
clrDlg.m_cc.Flags=CC_ENABLEHOOK | CC_FULLOPEN | CC_RGBINIT;
if(clrDlg.DoModal() == IDOK){ // диалог закончился нажатием ОК
m_addColors=clrDlg.GetSavedCustomColors(); // сохраняем пользовательские цвета
m_BrushColor=clrDlg.GetColor(); // фиксируем выбранный цвет
UpdateMenuBmp(brushColor,m_BrushColor); // обновляем индикатор
m_Brush.DeleteObject();
m_Brush.CreateSolidBrush(m_BrushColor); // создаем новую кисть
m_dcMem.SelectObject(&m_Brush); // и прописываем ее в контекст
}
}

BOOL CMinipaintDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{ // функция замены курсора
if(m_Curs){ // если замена курсора нужна
::SetCursor(AfxGetApp()->LoadStandardCursor(
m_drawmode == 4 ? IDC_SIZEALL : IDC_CROSS));
return TRUE; // меняем курсор в зависимости от выбранного инструмента
}
return CDialog::OnSetCursor(pWnd, nHitTest, message);
}

void CMinipaintDlg::OnDestroy()
{
CDialog::OnDestroy();
if(m_hBmpNew != NULL ){
DeleteObject(m_hBmpNew); // уже работали с изображением - освобождаем память
VERIFY(SelectObject(m_dcMem,m_hBmpOld)); // возвращаем BMP по умолчанию
m_dcMem.DeleteDC();
}
}


NewImage.h

#if !defined(AFX_NEWIMAGE_H__8CB64A00_1C31_4F68_A236_C8B41F46E8AA__INCLUDED_)
#define AFX_NEWIMAGE_H__8CB64A00_1C31_4F68_A236_C8B41F46E8AA__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// NewImage.h : header file
//

/////////////////////////////////////////////////////////////////////////////
// NewImage dialog

class NewImage : public CDialog
{
// Construction
public:
NewImage(CWnd* pParent = NULL); // standard constructor
int m_width; // введенная ширина рисунка
int m_height; // введенная высота рисунка
// Dialog Data
//{{AFX_DATA(NewImage)
enum { IDD = IDD_DIALOG1 };
CSpinButtonCtrl m_Spin2;
CSpinButtonCtrl m_Spin1;
CEdit m_Edit2;
CEdit m_Edit1;
//}}AFX_DATA


// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(NewImage)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL

// Implementation
protected:

// Generated message map functions
//{{AFX_MSG(NewImage)
virtual BOOL OnInitDialog();
afx_msg void OnKillfocusEdit1();
afx_msg void OnKillfocusEdit2();
virtual void OnOK();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_NEWIMAGE_H__8CB64A00_1C31_4F68_A236_C8B41F46E8AA__INCLUDED_)


NewImage.cpp

// NewImage.cpp : implementation file
//

#include "stdafx.h"
#include "minipaint.h"
#include "NewImage.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// NewImage dialog


NewImage::NewImage(CWnd* pParent /*=NULL*/)
: CDialog(NewImage::IDD, pParent)
{
//{{AFX_DATA_INIT(NewImage)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}


void NewImage::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(NewImage)
DDX_Control(pDX, IDC_SPIN2, m_Spin2);
DDX_Control(pDX, IDC_SPIN1, m_Spin1);
DDX_Control(pDX, IDC_EDIT2, m_Edit2);
DDX_Control(pDX, IDC_EDIT1, m_Edit1);
//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(NewImage, CDialog)
//{{AFX_MSG_MAP(NewImage)
ON_EN_KILLFOCUS(IDC_EDIT1, OnKillfocusEdit1)
ON_EN_KILLFOCUS(IDC_EDIT2, OnKillfocusEdit2)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// NewImage message handlers

BOOL NewImage::OnInitDialog()
{
CDialog::OnInitDialog();
m_Spin1.SetRange(8,2048); // устанавливаем диапазон изменения ширины изображения
m_Spin1.SetPos(743); // ширина по умолчению
m_Spin2.SetRange(8,2048); // устанавливаем диапазон изменения высоты изображения
m_Spin2.SetPos(465); // высота по умолчанию
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}

void NewImage::OnKillfocusEdit1()
{
UpdateData(); // синхронизация элемента ввода и спиннера при вводе вручную
CString buf;
m_Edit1.GetWindowText(buf);
m_Spin1.SetPos(atoi((LPCTSTR)buf));
UpdateData(FALSE);
}

void NewImage::OnKillfocusEdit2()
{
UpdateData();
CString buf;
m_Edit2.GetWindowText(buf);
m_Spin2.SetPos(atoi((LPCTSTR)buf));
UpdateData(FALSE);
}

void NewImage::OnOK()
{
m_width=m_Spin1.GetPos(); // перед закрытием диалога сохраняем введенные значения
m_height=m_Spin2.GetPos(); // ширины и высоты
CDialog::OnOK();
}


5. Скриншоты работы программного обеспечения по всем функциям, заложенным в техническом задании
На рис.5 и рис.6 представлены скриншоты работы графического редактора, причем на рис.5. представлены результаты отрисовки различных примитивов в новом изображении, а на рис.6 представлены результаты корректировки изображения, считанного из файла.

Рис.5.Новое изображение

Рис.5.Корректировка считанного изображения
6. Технические условия применения программного обеспечения и инструкция пользователя
Разработка и тестирование программы осуществлялись на компьютере со следующими техническими характеристиками:
процессор Intel Celeron 430 1.8 ГГц;
1 Гб оперативной памяти;
жесткий диск объемом 360 Гб;
операционная система Windows XP Professional 2002 SP3;
средство разработки Visual C++.
В качестве программного средства разработки была выбрана система программирования Visual C++. Выбор системы программирования обусловлен заданием на курсовую работу.
Программа не предъявляет особых требований к аппаратному обеспечению, для ее нормальной работы может быть использован любой компьютер под управлением 32-х разрядной операционной системы семейства Windows. Наличия каких бы то ни было установленных программных средств не требуется.
Установка программы сводится к копированию в выбранное место папки, содержащей исполняемый файл.
Для успешной работы программы персональный компьютер должен соответствовать минимальным требованиям, достаточным для функционирования установленной на нем операционной системы.
Для установки программы достаточно 1 Мb свободного места на жестком диске.
Эксплуатация программы не требует особых навыков за пределами знакомства со стандартным интерфейсом операционной системы.
Рассмотрим диалоги программы и ее функции.
Интерфейс программы основан на системе меню. Основные функции программы осуществляются путем выбора соответствующих пунктов меню и нажатия на кнопки, содержащиеся в диалогах.
В меню «Файл» имеются пункты, позволяющие создать новое изображение, открыть графический файл и загрузить изображение из него, сохранить отредактированный файл и завершить работу приложения.

Работа с программой начинается с выбора изображения для редактирования. Может быть выбрано новое изображение (рис.6), либо изображение из файла (рис.7).
После задания парметров нового изображения или считывания изображения из файла приложение готово к работе. Первоначально установлен инструмент «Карандаш», цвет линий контура синий, цвет заливки белый, ширина линий контура 1.

Рис.6. Диалог задания параметров нового изображения

Рис.7. Диалог выбора файла изображения
В меню «Инструмент» можно выбрать графический примитив для рисования. Может быть выбран «Карандаш», «Линия», «Прямоугольник», «Эллипс» или «Заливка».
Режим «Карандаш» означает, что перемещение мыши с нажатой левой кнопкой приводит к рисованию следа мыши.
Режимы «Линия», «Прямоугольник» и «Эллипс» соответствует так называемым «резиновым фигурам», то есть нажатием левой кнопки мыши фиксируются координаты начала рисования фигуры, отпусканием левой кнопки мыши фиксируются координаты конца рисования.
В перечисленных режимах курсор имеет вид перекрестия.
В режиме «Заливка» нажатие левой кнопки мыши в некоторой области, ограниченной линиями другого цвета, приводит к закрашиванию этой области текущим цветом пера. В этом режиме курсор имеет вид перекрестия со стрелочками на концах.
В меню «Цвет» можно задать цвет рисования контуров и цвет заливки отображаемых фигур (прямоугольников и эллипсов). Диалог выбора цвета показан на рис.8.

Рис.8. Диалог выбора цвета
В меню «Толщина» можно задать ширину линий контура в диапазоне от 1 до 30.
Общий вид приложения показан на рис.9.

Рис.9. Общий вид приложения

Заключение
Программа реализована в соответствии с поставленной задачей и может быть применена на практике, хотя, безусловно, для серьезной работы с изображениями реализованных функций явно недостаточно.
Возможно расширение программы путем добавления новых графических примитивов (например, аэрограф), новых образцов закраски областей (например, штриховка), новых функций (например, отмена/возобновление операции).

Список используемой литературы
1. Б. Страуструп Язык программирования C++. Специальное издание.– СПб.: "Невский Диалект", 2001.–1099 с.
2. C++ для начинающих. Электронное пособие по языку С++. [электронный ресурс]: http://www.find-info.ru/doc/cpp/001/index.htm
3. Вахтуров В. Добавление функциональности загрузки изображений форматов BMP, GIF, Jpeg, EMF (и других) из ресурсов и внешних файлов в свое приложение. Информационный канал SUBSCRIBE.RU – Visual C++, расширенное программирование. Выпуск № 13. –http://subscribe.ru/archive/comp.soft.prog.qandacpp/200411/26162734.html#section_mfc













4





6





40

Список используемой литературы
1. Б. Страуструп Язык программирования C++. Специальное издание.– СПб.: "Невский Диалект", 2001.–1099 с.
2. C++ для начинающих. Электронное пособие по языку С++. [электронный ресурс]: http://www.find-info.ru/doc/cpp/001/index.htm
3. Вахтуров В. Добавление функциональности загрузки изображений форматов BMP, GIF, Jpeg, EMF (и других) из ресурсов и внешних файлов в свое приложение. Информационный канал SUBSCRIBE.RU – Visual C++, расширенное программирование. Выпуск № 13. –http://subscribe.ru/archive/comp.soft.prog.qandacpp/200411/26162734.html#section_mfc

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

филиал федерального государственного бюджетного образовательного учреждения

образования

"Алтайский государственный университет"

в Бийске

Курсы

По дисциплине: "Прикладного программирования"

На тему: "Графический редактор"

Бийск 2014

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1. ОБЗОР ГРАФИЧЕСКИХ ВОЗМОЖНОСТЕЙ СРЕДЫ ПРОГРАММИРОВАНИЯ LAZARUS

2. РАЗРАБОТКА ПРОГРАММЫ "ГРАФИЧЕСКИЙ РЕДАКТОР" В СРЕДЕ ПРОГРАММИРОВАНИЯ LAZARUS

ВЫВОД

библиография

ВВЕДЕНИЕ

lazarus графические программы

Программа для работы с графикой на компьютере (графические редакторы) нашел широкое применение среди пользователей. Создание графических редакторов возможно с использованием различных языков и сред программирования приложений. Значимые характеристики для программирования графики на компьютере в среде программирования Lazarus, следовательно, изучение этих особенностей является весьма актуальной.

Объект: языки и среды программирования приложений.

Тема: основные возможности среды Lazarus для программирования компьютерной графики.

Цель работы: изучить графические возможности среды программирования Lazarus.

Цели:

1. Изучить литературные источники по теме диссертации.

2. Рассмотреть основные компоненты окружающей среды Lazarus для программирования компьютерной графики.

3. Сформулировать основные требования для программы "Графический редактор".

4. Реализации программы "Графический редактор" в среде программирования Lazarus.

Методы исследования: изучение литературных источников, интернет-источников, технической документации.

1. ОБЗОР ГРАФИЧЕСКИХ ВОЗМОЖНОСТЕЙ СРЕДЫ ПРОГРАММИРОВАНИЯ LAZARUS

Для работы с компьютерной графикой в среде Lazarus используется ряд компонентов. В распоряжении программиста является холст (canvas) - свойство Холст, карандаш - собственности Перо, и кисть - свойство Brush [1].

Свойство Canvas имеют следующие компоненты:

Узнать стоимость работы