c 课程作业

发布 2022-06-25 16:32:28 阅读 5159

浙江大学。课程**。

(2013-2014学年冬学期)

**题目:基于visual studio 2008简单画图程序设计。

课程名称: visual c

任课教师。学号。

姓名。完成日期。

基于visual studio 2008简单画图程序设计。

本设计以visual studio 2008为平台来设计简单画图程序,参考左飞、万晋森、刘航的《visual c ++数字图像处理开发入门与编程实践》书中实例为基础,进行改进与编译,弄清程序每部分作用和原理,体会mfc编程的经过,并为以后独立完成设计打下很好的基础。将简单画图程序命名为easydraw,easydraw是一个基于mfc多文档的应用程序,同时利用了无模式对话框实现了绘图工具箱的功能。easydraw拥有以下功能:

1) 直线、矩形、椭圆的绘制。

2) 可以更改绘制线条的类型、宽度、颜色。

图1 easydraw的界面示意图。

1. 概要设计。

1.1创建新项目。

启动visual studio 2008,选择文件→新建→项目命令。在出现的“新建项目”对话框中选择“mfc应用程序”模板,输入名称easydraw,然后点击确定,在”mfc应用程序向导”对话框直接单击“确定”,使用默认配置生成项目。

1.2图形设计。

本程序只需要实现直线、矩形、椭圆的绘制。仔细分析之后,发现这3种结构都有共同的特点:只需要用两个点,就可以确定图像。所以对于每个图像,程序只需要保存左上方和右下方的点。

针对本设计的规模,为了简化编程,将3类图形采用了统一的结构体easygraphics进行描述。本程序使用结构体而不使用类的原因在于结构体默认是public的访问权限。easygraphics结构体具体定义如下:

/结构体组成部分。

#pragma once

/ 图形类型定义。

#define eg_line 0 //直线。

#define eg_rect 1 //矩形。

#define eg_circle 2 //椭圆。

struct easygraphics

uint m_ntype图形类型

colorref m_clrcolor图形颜色。

uint m_nlinewidth; /图形线条宽度。

intm_nlinetype图形线条类型。

cpoint m_pttopleft图形左上点。

cpoint m_ptbottomright; /图形右下点。

1.3绘制工具箱。

绘制工具箱其实就是一个无模式对话框,所以需要先完成对话框的设计。

先在项目中添加一个对话框资源,改名为idd_drawtools。为使对话框看起来像工具箱,需要将“tool window”属性改为true。然后为该对话框资源创建对应的类cdrawtooldlg。

绘制工具箱的界面设计如图2所示,绘制工具箱资源关系如表1所示,部分控件需要修改的属性如表2所示。

图2 绘制工具箱的界面设计。

表1 绘制工具箱资源与变量关系。

下面是一些控件的属性设置:

表2 部分控件需要修改的属性。

1.4绘制工具栏和菜单。

1)添加“工具”菜单项。

由于“工具”菜单用于绘制文档,所以只需在资源视图中的”menu”中idr_easydrawtype中添加即可,图3所示。

图3 “工具”菜单项的设计。

具体菜单属性如表3所示:

2)添加绘图工具栏按钮。

打开资源视图,展开“*******”后,在原有的工具栏后添加3个新的按钮,如图4所示。

图4 工具栏按钮的设计。

新添加的按钮的id应该和“工具”菜单下的命令id一一对应,所以按钮的id应该分别改为id_tool_line、id_tool_rect、id_tool_circle。

程序的概要设计到这里已经全部完成,下面正式开始编码。

2.实例编码。

程序主要由两大部分完成所有绘制功能:一个是绘图工具箱对话框,一个是视图类。下面先将绘图工具箱对话框cdrawtooldlg类的**列出:

的**清单:

#pragma once

#include ""

/ cdrawtooldlg 对话框。

class cdrawtooldlg : public cdialog

declare_message_map()

declare_dynamic(cdrawtooldlg)

public:

bool m_bshow; /是否处在“显示”状态。

// 控件变量。

cstatic m_stcolor颜色框。

cstatic m_stprev预览框。

cdrawtooldlg(cwnd* pparent = null); 构造函数。

virtual ~cdrawtooldlg();

//获取直线类型。

int getlinetype() const

//获取直线宽度。

uint getlinewidth() const

//获取直线颜色。

colorref getlinecolor() const

void updatedialog(void绘制对话框中颜色框和预览框。

virtual bool oninitdialog对话框的初始化。

// 消息响应函数。

afx_msg void onbnclickedradiosolid单击直线类型的“正常”的响应函数。

afx_msg void onbnclickedradiodash单击直线类型的“虚线”的响应函数。

afx_msg void onbnclickedradiodot单击直线类型的“点线”的响应函数。

afx_msg void onbnclickedradiodashdot单击直线类型的“虚点线1”的响应函数。

afx_msg void onbnclickedradiodashdotdot单击直线类型的“虚点线2”的响应函数。

afx_msg void onbnclickedchangecolor改变颜色”按钮的响应函数。

afx_msg void onenchangeeditlinewidth线宽改变的响应函数。

afx_msg void onpaint绘制对话框。

enum virtual void oncancel();

virtual void dodataexchange(cdataexchange* pdx); ddx/ddv 支持。

virtual void postncdestroy();

private:

intm_nlinetype; /直线类型。

colorref m_clrcolor直线颜色。

uint m_nlinewidth; /直线宽度。

的**清单:

/ :实现文件。

#include ""

#include ""

#include ""

/ cdrawtooldlg 对话框。

implement_dynamic(cdrawtooldlg, cdialog)

/建立构造函数。

cdrawtooldlg::cdrawtooldlg(cwnd* pparent /*null*/)

: cdialog(cdrawtooldlg::idd, pparent), m_nlinetype(0), m_nlinewidth(1), m_bshow(true)

m_clrcolor = rgb(0, 0, 0);

cdrawtooldlg::~cdrawtooldlg()

void cdrawtooldlg::dodataexchange(cdataexchange* pdx)

cdialog::dodataexchange(pdx);

ddx_control(pdx, idc_static_color, m_stcolor);

ddx_control(pdx, idc_static_prev, m_stprev);

ddx_text(pdx, idc_edit_line_width, m_nlinewidth);

C 课程大作业

文章关键词检索及匹配度计算。xxxx学院。学号 1234567 姓名 刘黄书。指导教师 猪哥亮。一 课题介绍 本课题是一次对编程知识的应用。通过对所学内容的应用,解决对文章关键字的检索及匹配度的计算这一实际应用。难点在于对文章中单词的提取与比较和对于匹配度算法的设计。本课题有如下需求 1 对关键字的...

c 课程设计作业

学号 201205527 姓名 刘新雯。学院 数理学院。专业 统计学。一 设计名称 计算器。二 基本功能 本课程设计是在基于对话框的应用程序中模拟一个计算器,本计算器可以进行十进制下的四则运算 加 减 乘 除 和四则混合运算,可以把十进制转化为二进制或十六进制,可以进行一些常用的函数运算 比如sin...

c语言课程设计作业

课程设计。设计一个学生成绩管理系统,该系统记录了全班同学语。文 数学 英语3门课程的成绩,并对成绩进行管理。主要功能如下 1 具备对成绩的管理功能 添加 删除 排序 2 具备对课程成绩的统计功能 最高分,最低分,平均分,及格率等 3 具备按学号 姓名 或课程名查询成绩的功能。4 具备将学生成绩写入文...