刘文斌 Windows编程大作业

发布 2022-09-10 11:23:28 阅读 7412

武汉轻工大学。

姓名: 刘文斌。

院系: 数学与计算机学院 。

班级: 软件工程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...