武汉轻工大学。
姓名: 刘文斌。
院系: 数学与计算机学院 。
班级: 软件工程1303班。
学号: 1305110050
老师: 刘文涛。
1、基本要去:
能显示常用**格式。
能实现基本**操作功能,例如旋转,放大,缩小。
界面布局合理、美观;
2、介绍:基于mfc的**浏览器,能够打开常用格式的**,如bmp、jpg等格式文件,能够实现一些基本的操作,如旋转,放大,缩小等功能。
本次的大作业就是利用mfc强大而全面的类库,结合activex控件资源开发一款简单而实用的**浏览器软件。
本次课程设计制作的**浏览器是利用windows系统自带的**控件控件实现,可以分别通过按钮和菜单实现**的浏览,放大、缩小、旋转等功能。 所要实现的功能,以及各个控件的功能特点设计软件的流程图。
工具:visual c++ 6.0;
环境:windows环境。
2.1.1、建立一个单文档:
2.1.2、为单文档对话框添加位图控件:
2.1.3、添加打开位图按钮:
2.1.4:为打开位图功能添加相应的函数和**:
打开【mfc classwizard】,在class name下选择cshowpicdlg类,object ids下选择按钮控件的id:idc_open,在message下选择bn_clicked,然后点击add function按钮,在弹出的对话框内填写onbtnopenbmp(这个是函数名),点击ok,然后点击editcode编辑函数。
在打开的文件中onbtnopenbmp()位置添加以下**:
cfiledialog dlg(true,"bmp","bmp",ofn_hidereadonly,"bmp files(*.bmp)|*bmp||"
if( !idok)
return;
m_path = 获得**路径。
updatedata(false); 更新路径公共变量。
showpic();调用显示**函数。
在头文件添加cshowpicdlg类需要的函数和成员变量声明。
public:
void cshowpicdlg::showpic();
private:
cstring m_path;
rect rect;
bitmap bm;
hbitmap hbitmap;
hdc hsrcdc;
hdc hdesdc;
cwnd *hwnd;
继续转回文件中,编写showpic()函数体,**如下:
oid cshowpicdlg::showpic()
if(m_path=="判断**路径是否存在。
return;
hwnd = getdlgitem(idc_showimg);
hdesdc = hwnd->getdc()-m_hdc;
hsrcdc = createcompatibledc(hdesdc);
hbitmap=(hbitmap)loadimage(afxgetinstancehandle(),m_path,image_bitmap,0,0,lr_loadfromfile|lr_createdibsection);
getobject(hbitmap, sizeof(bitmap), bm);
selectobject(hsrcdc, hbitmap);
hwnd->getclientrect(&rect);
:setstretchbltmode(hdesdc,coloroncolor);
:stretchblt(hdesdc, hsrcdc,0, 0,
updatedata(false);
打开**后效果如下:
2.2.1:添加一个缩小**的功能按钮:
2.2.2:为缩小功能添加相对应的函数和**:
onpaint函数:
void cshowpicdlg::onpaint()
if (isiconic())
else显示**函数;
void cshowpicdlg::showpic()
if(m_path=="判断**路径是否存在。
hwnd = getdlgitem(idc_showimg);
hdesdc = hwnd->getdc()-m_hdc;
hsrcdc = createcompatibledc(hdesdc);
hbitmap=(hbitmap)loadimage(afxgetinstancehandle(),m_path,image_bitmap,0,0,lr_loadfromfile|lr_createdibsection);
getobject(hbitmap, sizeof(bitmap), bm);
selectobject(hsrcdc, hbitmap);
hwnd->getclientrect(&rect);
::setstretchbltmode(hdesdc,coloroncolor);
::stretchblt(hdesdc, hsrcdc,0, 0,
updatedata(false);
缩小**函数:
void cshowpicdlg::onnarrow()
// todo: add your control notification handler code here
updatewindow();
stretchblt(hdesdc, hsrcdc,0, 0,
缩小的核心在于,将位图的左上角的点,和右下角的点进行移动,以达到缩小的效果:
updatewindow();
stretchblt(hdesdc, hsrcdc,0, 0,
2.3.1:添加一个放大**按钮:
2.3.2:为放大功能添加相对应的函数和**:
onpaint函数和显示**函数与缩小函数一样;核心显示**如下:
void cshowpicdlg::onmagnify()
// todo: add your control notification handler code here
updatewindow();
stretchblt(hdesdc, hsrcdc,0, 0,
放大函数的核心,在于将**的左上角和**的右下角的坐标进行移动,以达到放大的效果。
/ todo: add your control notification handler code here
2.4.1:添加一个旋转按钮:
2.4.2:为旋转功能添加相对应的函数和**:
图像旋转的实现较为复杂,是本设计中的难点。旋转有两种思路,一种是像缩放一样,借助于lanimage::draw()函数,按照旋转要求改变目标区域的水平坐标和垂直坐标,使其与源图像的坐标不同。
但是要使整幅图像都翻转过来,必须对图像的每个像素调用一次draw()函数。这样,如果是一幅640×480像素大小的图像,旋转一次就要调用640×480=307200次的draw()函数,draw()函数又是调用drawdibdraw()实现的,而此函数因为涉及到非常复杂的函数调用关系,并不适合进行如此大量次数的调用,如果采用这种方法实现旋转,其执行速度是让人无法忍受的。
实验五Windows网络编程 大作业
1 掌握win32 api网络相关函数的使用。2 了解软件开发的流程。1 pc机最低配置 2g hz以上cpu 1g以上内存 1g自由硬盘空间 2 vc 6.0或者更高版本vc 1 按照软件开发的流程进行一个网络软件设计与实现 2 编写软件开发的相关文档。请自学教程中windows网络编程部分内容,...
实验五Windows网络编程 大作业
1 掌握win32 api网络相关函数的使用。2 了解软件开发的流程。1 pc机最低配置 2g hz以上cpu 1g以上内存 1g自由硬盘空间 2 vc 6.0或者更高版本vc 1 按照软件开发的流程进行一个网络软件设计与实现 2 编写软件开发的相关文档。请自学教程中windows网络编程部分内容,...
windows编程作业
实验一 加法计算器。在这个函数中添加下面 updatadate 函数中参数true表示从控件变量中获取数值,false相反。sum a b,就是我们先在控件中添加的三个变量,此处所做的计算器只是用来做个加法。实验二 绘制矩形。实验三 字体的颜色。在文件中为cxxx类添加成员变量 intm ntext...