- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于MFC的图形图像处理方法
基于MFC的图形图像处理
——李明(08.2)2008200698
§1 MFC平台的简单应用
一 用C语言中自带的函数画点。
其步骤如下:
建立一个工程:“文件”——“新建”——选中“”-——” ”(在其中键入工程名称,如“TEST1”)—— (设置为自己想要存放的位置)——“确定”——“”——“完成”——“确定”。
左击“ ”即可出现所见工程中的所有类。若要实现画图功能,则必须要在其中的“”类中的“”函数中加入我们要实现功能所需要执行的代码。
现在可以先后通过工具栏中的“”、“”按钮进行编译执行。其结果如下:
图一
图一为空白的,那是因为我们没有在“”函数中加任何代码。(每次编译执行时,应把“图一”所示界面关闭,否者进行编译执行会出错。)
利用C语言中自带的函数画一个点:
双击“”-在函数“void CTEST1View::OnDraw(CDC* pDC)”提示的地方加上所要执行的代码,这里为:pDC-SetPixel(10,10,RGB(255,0,0));(该函数的前两个参数为所画点的位置坐标(x,y),第三个参数为其彩色值RGB三个分量各自的值)。经“”、“”后,其结果如下:
图二
可以看出所画此点极不清楚,我们可以自己编写一个画点函数。
二 改进的画点函数。
此方法的思想是:不只画出一个点P,同时也画出P附近的点。在图像中可看做显示一个像素及其领域中的像素。在这里以画出所有离P点水平和垂直距离均小于等于5的点为例。基于此思想,首先按照上一部分所说的“步骤1”建立一个工程“TEST2”,然后在“”函数中添加如下代码:
for (int i=-5;i=5;i++)
{
for (int j=-5;j=5;j++)
{
pDC-SetPixel(10+i,10+j,RGB(255,0,0));
}
}
经编译执行后可得:
图三
图二与图三相比,后者清楚了许多。这是因为图像是由许许多多的像素组成的,一个像素相对于整幅图来说是相当小的。故图二所画的一个点似乎是看不到的。
三 利用C语言中的函数直接画线。
如同前两部分,首先建立一个工程TEST3,然后在“”函数中执行如下命令:
pDC-MoveTo(10,10);
pDC-LineTo(100,100);
经编译执行后就画出了一条从点(10,10)至点(100,100)的直线。所画直线如下图所示:
图四
§2 生成直线的扫描转换算法
一 生成直线的DDA算法
图五
2.直线DDA算法描述:
,且(x1,y1)和(x2,y2)分别为所求直线的起点终点坐标 可通过计算由x方向的增量x引起y的改变来生成直线:
=+x (1-) =m+b=m(+△x)+b= △x·m (1-) 也可通过计算由y方向的增量y引起x的改变来生成直线:
=y (1-) ===+ (1-) 则
当时,。 (1-5)
为了减少误差积累,仅当|m|1是采用(1-6)的方法。
当|m|1时,
应用时,的方法。 (1-6)
3:DDA算法的实现:
①建立工程TEST4。
②添加类Cline:右击“”——“New Class”——” ”的属性为“”;“ ”为“CLine”——“确定”。
③添加类Cline的成员:右击“”——” Add Member Variable…”——” ”为“Cpoint”; “”为“point1”; “”——“确定”。用同样的方法加一个成员变量point2。
④将Cline的数据成员初始化:双击“”——通过“ point1.x=0;
point1.y=0;”将point1初始化。同样将point2初始化。
⑤添加类Cline的带参数的构造函数:
在上一步的构造函数下面加上
CLine::CLine(int x1,int y1,int x2,int y2)
{
point1.x=x1;
point1.y=y1;
point2.x=x2;
point2.y=y2;
}
双击“”——在“CLine();”后面加上“CLine(int x1,int y1,int x2,int y2);”
⑥在类Cline中增加函数void CLine::CLineddaplot(CDC *pDC):
右击“”——“Add Member Function…”——“”为“void”;“ ”为“CLineddaplot(CDC *pDC)”——”确定”——双击函数“”添加基于DDA算法思想的画线函数代码。
⑦在“”函数中的相应:双击“”类中的“”—— 在“TEST4View.cpp”的前面加上#includeLine.h——在void CTEST5View::OnDraw(CDC* pDC)提示的地方加入
CLine line(10,10,40,50);
line.
您可能关注的文档
最近下载
- 机械设计基础说课(终结稿)ppt课件.pptx VIP
- X-Art校正全目录(更新至2013年9月27)-推荐下载.pdf VIP
- 2024版《53天天练课堂笔记》1年级语文下册(统编RJ).pdf
- 第一节神经系统疾病病人常见症状体征的护理课件.pptx VIP
- 水利安全生产风险管控“六项机制”实施工作指南(2024年版).pdf VIP
- 意识障碍的评估ppt课件.ppt VIP
- 心理学与观念艺术.pptx VIP
- 页岩气开采新技术2025:环境风险评估与生态安全效益分析报告.docx
- 2024辽宁丹东市振安区社区专职工作者招录32人笔试模拟试题及答案解析.docx VIP
- 保险业反洗钱可疑交易和典型案例分析分解.ppt VIP
文档评论(0)