课程设计论文-基于MFC的绘图软件的设计与实现
更新时间:2023-09-16 02:20:01 阅读量: 高中教育 文档下载
- 基于dsp的课程设计论文推荐度:
- 相关推荐
基于MFC的绘图软件的设计与实现
一、多媒体概述 (一)多媒体的定义
多媒体(duō méi tǐ)的英文单词是Multimedia,它由media和multi两部分组成。一般理解为多种媒体的综合。
媒体(Media)就是人与人之间实现信息交流的中介,简单地说,就是信息的载体,也称为媒介。多媒体就是多重媒体的意思,可以理解为直接作用于人感官的文字、图形图像、动画、声音和视频等各种媒体的统称,即多种信息载体的表现形式和传递方式。
多媒体即多媒体信息服务,MMS(Multimedia Message Service),是目前短信技术开发最高标准的一种。它最大的特色就是可以支持多媒体功能,借助高速传输技术EDCE(Enhanced Data rates for GSM Erolution)和GPRS,以WAP为载体传送视频片段、图片、声音和文字,不仅可以在手机之间进行多媒体传输。而且可以在手机和电脑之间传输;其短消息容量平均为3万字节,最高可达10万字节;具有MMS功能的移动电话内置媒体编辑器,可以编写多媒体信息,如果安装上一个内置或外置的照相机,用户还可以制作并传送PowerPoint格式的信息或电子明信片。
多媒体技术不是各种信息媒体的简单复合,它是一种把文本(Text)、图形(Graphics)、图像(Images)、动画(Animation)和声音(Sound)等形式的信息结合在一起,并通过计算机进行综合处理和控制,能支持完成一系列交互式操作的信息技术。多媒体技术的发展改变了计算机的使用领域,
- 1 -
使计算机由办公室、实验室中的专用品变成了信息社会的普通工具,广泛应用于工业生产管理、学校教育、公共信息咨询、商业广告、军事指挥与训练,甚至家庭生活与娱乐等领域。
(二)多媒体的解析
多媒体是计算机和视频技术的结合,实际上它是两个媒体;声音和图像,或者用现在的术语:音响和电视。多媒体本身有两个方面,和所有现代技术一样它是由硬件和软件,或机器和思想混合组成。可以将多媒体技术和功能在概念上区分为控制系统和信息。 多媒体之所以能够实现是依靠数字技术。多媒体代表数字控制和数字媒体的汇合,电脑是数字控制系统,而数字媒体是当今音频和视频最先进的存储和传播形式。事实上有人就简单地认为多媒体是电脑和电视的结合。电脑的能力达到实时处理电视和声音数据流的水平,这时多媒体就诞生了。多媒体电脑需要具有比主流电脑更强的能力,多媒体电脑决定了主流电脑的发展。区别普通电脑和多媒体电脑的主要东西是声卡和只读光盘驱动器。光盘是多媒体的主要存储和交换媒体。没有这种方便的光盘,电脑工业就无法销售构成多媒体节目的几百兆字节的音频、可视的和文字的数据,你也无法买到多媒体。
现在可以回答什么是多媒体。它不只是一件东西,而是包括许多东西的复杂的组合:硬件、软件和这两者相遇时的界面。不,我们还忘了一件最重要的事情.多媒体还包括你。咳,就是!对于多媒体,你不再是一个被动的观众,你可以控制,可以交互作用,可以让它按你的需要去做。在一个报告中,你可以不管那些无用的东西而直接进入重要的数据,可以将
- 2 -
感兴趣的全世界的报告和图片收集汇编到一起。这就是多媒体的力量和它与传统媒体(如书本和电视)的区别所在。
多媒体能做什么?它展示信息、交流思想和抒发情感。它让你看到、听到和理解其他人的思想。也就是说,它是一种通讯的方式。声音、图像、图形、文字等被理解为承载信息的媒体而称为多媒体其实并不准确,因为这容易跟那些承载信息进行传输、存储的物质媒体(也有人称为介质),如电磁波、光、空气波、电流、磁介质等相混淆。但是,现在多媒体这个名词或术语几乎已经成为文字、图形、图像和声音的同义词,也就是说,一般人都认为,多媒体就是声音、图像与图形等的组合,所以在一般的文章中也就一直沿用这个不太准确的词。目前流行的多媒体的概念,主要仍是指文字、图形、图像、声音等人的器官能直接感受和理解的多种信息类型,这已经成为一种较狭义的多媒体的理解。
在计算机和通信领域,我们所指的信息的正文、图形、声音、图像、动画,都可以称为媒体。从计算机和通信设备处理信息的角度来看,我们可以将自然界和人类社会原始信息存在的式---数据、文字、有声的语言、音响、绘画、动画、图像(静态的照片和动态的电影、电视和录像)等,归结为三种最基本的媒体:声、图、文。传统的计算机只能够处理单媒体---“文”,电视能够传播声、图、文集成信息,但它不是多媒体系统。通过电视,我们只能单向被动地接受信息,不能双向地、主动地处理信息,没有所谓的交互性。可视电话虽然有交互性,但我们仅仅能够听到声音,见到谈话人的形象,也不是多媒体。所谓多媒体,是指能够同时采集、处
- 3 -
理、编辑、存储和展示两个或以上不同类型信息媒体的技术,这些信息媒体包括文字、声音、图形、图像、动画和活动影像等。
在日常生活中,被称为媒体的东西有许多,如蜜蜂是传播花粉的媒体、苍蝇是传播病菌的媒体。但准确地说,这些所谓的“媒体”是传播媒体,并非我们所说的多媒体中的“媒体”,因为这些传播媒体传播的都是某种物质实体,而文字、声音、图像、图形这些都不是物质实体,它们只是客观事物某种属性的表面特征,是一种信息表示方式。我们在计算机和通信领域所说的“媒体”,是信息存储、传播和表现的载体,并不是一般的媒介和媒质。
从概念上准确地说,多媒体中的“媒体”应该是指一种表达某种信息内容的形式,同理可以知道,我们所指的多媒体,应该是多种信息的表达方式或者是多种信息的类型,自然地,我们就可以用多媒体信息这个概念来表示包含文字信息、图形信息、图像信息和声音信息等不同信息类型的一种综合信息类型。
总之,由于信息最本质的概念是客观事物属性的表面特征,其表现方式是多种多样的,因此,较为准确而全面的多媒体定义,就应该是指多种信息类型的综合。
这些媒体可以是图形、图像、声音、文字、视频、动画等信息表示形式,也可以是显示器、扬声器、电视机等信息的展示设备,传递信息的光纤、电缆、电磁波等中介媒质,还可以是存储信息的磁盘、光盘、磁带等存储实体。
(三)多媒体的特点
- 4 -
多媒体技术有以下几个主要特点:
1)集成性 能够对信息进行多通道统一获取、存储、组织与合成。 2)控制性 多媒体技术是以计算机为中心,综合处理和控制多媒体信息,并按人的要求以多种媒体形式表现出来,同时作用于人的多种感官。
3)交互性 交互性是多媒体应用有别于传统信息交流媒体的主要特点之一。传统信息交流媒体只能单向地、被动地传播信息,而多媒体技术则可以实现人对信息的主动选择和控制。
4)非线性 多媒体技术的非线性特点将改变人们传统循序性的读写模式。以往人们读写方式大都采用章、节、页的框架,循序渐进地获取知识,而多媒体技术将借助超文本链接(Hyper Text Link)的方法,把内容以一种更灵活、更具变化的方式呈现给读者。
5)实时性 当用户给出操作命令时,相应的多媒体信息都能够得到实时控制。
6)信息使用的方便性 用户可以按照自己的需要、兴趣、任务要求、偏爱和认知特点来使用信息,任取图、文、声等信息表现形式。
7)信息结构的动态性 “多媒体是一部永远读不完的书”,用户可以按照自己的目的和认知特征重新组织信息,增加、删除或修改节点,重新建立链。
(四)多媒体技术概述
1、多媒体技术的基本概念
在计算机行业里,媒体有两种含义:其一是指传播信息的载体,如语言、文字、图像、视频、音频等等;其二是指存贮信息的载体,如ROM、RAM、
- 5 -
BYTE tmStruckOut; BYTE tmFirstChar; BYTE tmLastChar; BYTE tmDefaultChar; BYTE tmBreakChar; BYTE tmPitchAndFamily; int tmOverhang; int tmDigitizedAspectX; int tmDigitizedAspectY; } TEXTMETRIC; CFont fontText; CString strText; CSize sizeText;
ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
DEFAULT_PITCH | FF_ROMAN, \调用CFont::CreateFont函数,建立GDI的字体对象,参数1和2是字体的高度和宽度,最后一个参数是字体的名称
CFont* pOldFont = (CFont*) pDC->SelectObject(&fontText);//将新字体选进
设备,并返回指向前一次被选对象的指针。作用保存原来的对象,以便完成任务时恢复它
pDC->GetTextMetrics(&tm);//参数是指向TEXTMETRIC结构的指针,得到当前字体的属
性,
strText.FormanPoint t(\磅 WINDOWS 中文字体范例 1234567890\
sizeText = pDC->GetTextExtent(strText); pDC->TextOut(0, nPos, strText);
pDC->SelectObject(pOldFont);//恢复原来的对象 nPos -= tm.tmHeight + tm.tmExternalLeading; }
4)编辑CMy82View::OnDraw函数
- 16 -
void CMy82View::OnDraw(CDC* pDC) {
int nPosition = 0;
for (int i = 12; i <= 24; i += 2) { ShowFont(pDC, nPosition, i); }
三、图形绘画程序的具体实现
(一)在视类中添加成员变量并初始化
class CDrawView : public CView {// Implementation public: };
int m_nMaxX; // 用于保存屏幕尺寸 int m_nMaxY;
CDC * m_pMemDC; //内存DC
CBitmap * m_pBitmap; // 与显示DC的位图兼容的位图 int m_nDrawType; //画图类型 int m_nLineWidth; //线宽
COLORREF m_cLineColor; //线的颜色 COLORREF m_cFillColor; //填充颜色 bool m_bDrawing; //是否正在画图 CPoint m_ptStart; //画图的起始点 CPoint m_ptOld; //保存鼠标临时点 virtual ~CDrawView();
( 1 )在构造函数中初始化部分成员变量
CDrawView::CDrawView() {
// TODO: add construction code here
m_pMemDC = new CDC; //构造内存DC对象
- 17 -
}
m_pBitmap = new CBitmap; // 构造位图对象
m_nDrawType = -1; //程序启动时没有选中绘图类型,不处于绘图状态 m_nLineWidth = 1; //线宽初始为1个像素
m_cLineColor = RGB(0,0,0); //线的颜色初始为黑色 m_cFillColor = RGB(0,0,255); //填充色初始为蓝色 m_bDrawing = false; //程序启动时不处于画图状态
( 2 )在析构造函数中释放指针变量占用的内存
CDrawView::~CDrawView() {
delete m_pMemDC; //删除内存DC对象 delete m_pBitmap; //删除位图对象
}
( 3 )为视类添加WM_CREATE消息处理函数
int CDrawView::OnCreate(LPCREATESTRUCT lpCreateStruct {
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
m_nMaxX = GetSystemMetrics(SM_CXSCREEN);//得到屏幕宽度 m_nMaxY = GetSystemMetrics(SM_CYSCREEN); //得到屏幕高度 CDC * pDC = GetDC(); //获得显示DC的指针
m_pMemDC->CreateCompatibleDC(pDC); //创建显示DC的兼容内存DC //创建与显示DC的“位图”兼容的位图,位图和屏幕一样大
m_pBitmap->CreateCompatibleBitmap(pDC, m_nMaxX, m_nMaxY); //将兼容位图选进内存DC,pOldBitmap用来保存内存DC中的原位图
CBitmap * pOldBitmap = m_pMemDC->SelectObject(m_pBitmap);// 创建一个白色画刷 CBrush brush;
brush.CreateStockObject(WHITE_BRUSH);
- 18 -
//将选进内存DC的位图整个填上白色(与窗口底色一致) }
CRect rect(-1,-1,m_nMaxX, m_nMaxY); m_pMemDC->FillRect(rect,&brush); //恢复内存DC中的原有位图
m_pMemDC->SelectObject(pOldBitmap); ReleaseDC(pDC); // 释放显示DC return 0;
(二)在视类中添加菜单消息响应函数
1、在视图类中添加 “直线”、“矩形”、“椭圆”、“填充”4个菜单项的消息响应函数和“线宽”菜单中5个菜单项的消息响应函数 DrawView.h文件
afx_msg void OnSelectDrawType(UINT nID);
afx_msg void OnUpdateSelectDrawType(CCmdUI * pCmdUO); afx_msg void OnDrawLineWidth(UINT nID);
afx_msg void OnUpdateDrawLineWidth(CCmdUI * pCmdUO); DrawView.cpp文件
ON_COMMAND_RANGE(ID_DRAW_LINE,ID_DRAW_FILL, OnSelectDrawType) ON_UPDATE_COMMAND_UI_RANGE(ID_DRAW_LINE,ID_DRAW_FILL, OnUpdateSelectDrawType)
ON_COMMAND_RANGE(ID_DRAW_LINEWIDTH_ONE,ID_DRAW_LINEWIDTH_FIVE, OnDrawLineWidth)
ON_UPDATE_COMMAND_UI_RANGE(ID_DRAW_LINEWIDTH_ONE,ID_DRAW_LINEWIDTH_FIVE,OnUpdateDrawLineWidth)
void CDrawView::OnSelectDrawType(UINT nID) { }
m_nDrawType = nID - ID_DRAW_LINE;
- 19 -
void CDrawView::OnUpdateSelectDrawType(CCmdUI * pCmdUI) { }
void CDrawView::OnDrawLineWidth(UINT nID) { }
void CDrawView::OnUpdateDrawLineWidth(CCmdUI * pCmdUI) { }
int nID = pCmdUI->m_nID - ID_DRAW_LINEWIDTH_ONE + 1; if(nID == m_nLineWidth)
pCmdUI->SetCheck(true);
m_nLineWidth = nID - ID_DRAW_LINEWIDTH_ONE + 1; int nID = pCmdUI->m_nID - ID_DRAW_LINE; if(nID == m_nDrawType)
pCmdUI->SetCheck(true);
else
pCmdUI->SetCheck(false);
else
pCmdUI->SetCheck(false);
2、在视图类中添加 “线色?”和“填充色?”2个菜单项的消息处理函数
void CDrawView::OnDrawLinecolor() {
CColorDialog dlg;
dlg.m_cc.Flags |= CC_PREVENTFULLOPEN | CC_RGBINIT; dlg.m_cc.rgbResult = m_cLineColor; if(dlg.DoModal() == IDOK) {
- 20 -
正在阅读:
一体化教学工作页(8) - 图文03-11
北京2015年安全工程师安全生产法:冶金企业预防之锻造考试试卷04-13
《无机化学》习题解析和答案11-30
高考数学解题破题36计03-26
人教版九年级上册,初中数学中考知识点聚焦+第二十一章 作图与设03-08
氧化铋光催化剂08-16
新型药物恶唑类中间体开发研究可行性报告12-02
- 上海大众、一汽大众、东风日产车型与VIN代号对照表
- 第2章服装原型及原型制作
- 江苏省工商行政管理系统经济户口管理办法及四项制度
- 纪检监察业务知识试题2
- 传感器综合题答案
- 北京第二外国语学院翻硕招生人数及学费
- 初三新编英语教材下册
- 公司庆中秋、迎国庆联欢会客串词
- 向区委常委会汇报安全生产工作材料
- 2006年GCT英语模拟试题(三)及答案解析
- 经济法概念的早期使用
- 我爱做家务课堂教学设计
- 学校安全工作月报表、消防安全排查表、消防隐患排查台账
- 成本会计毕业论文
- 班级文化建设论文
- 2018年天津市高考文科试题与答案汇总(Word版) - 图文
- 铁路论文
- 2017年嵌入式系统设计师考试时间及地点
- 1.111--灾害与突发公共卫生事件应急预案
- 起爆点主图 注意买入 拉升 逃顶源码指标通达信指标公式源码
- 设计
- 绘图
- 基于
- 课程
- 实现
- 论文
- 软件
- MFC
- 软件设计与体系结构练习题全解精品资料 - 图文
- 2012年高考北京语文试卷解析(精析word版)(学生版)
- 省卫生厅消毒产品企业卫生行政许可审批程序
- 权重的三种计算方法
- 三年级数学第二单元年月日知识点
- 2015年中国旅游业报告
- 广西蜂产业发展规划
- 流动人口计划生育管理和服务工作若干规定
- 综采队班组安全工作标准 docx
- 经典案例四湖广铁路债券案
- 浅析防火墙技术现状及发展
- 2011.10《经济学》习题集
- 文艺创作与表演项目可行性研究报告 - 图文
- 小学三年级优秀学生评语集锦
- 测量放线工试题
- 小学语文一年级下册听力练习题
- 1:500数字化地形图测量技术设计书编写要求和实例范本
- 论莎士比亚戏剧的基督教情结
- 四轴加工 - 图文
- 财经大学研究生学位论文写作模板