图象的几何变换Word文档格式.docx

上传人:b****6 文档编号:17258118 上传时间:2022-11-29 格式:DOCX 页数:17 大小:545.43KB
下载 相关 举报
图象的几何变换Word文档格式.docx_第1页
第1页 / 共17页
图象的几何变换Word文档格式.docx_第2页
第2页 / 共17页
图象的几何变换Word文档格式.docx_第3页
第3页 / 共17页
图象的几何变换Word文档格式.docx_第4页
第4页 / 共17页
图象的几何变换Word文档格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

图象的几何变换Word文档格式.docx

《图象的几何变换Word文档格式.docx》由会员分享,可在线阅读,更多相关《图象的几何变换Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。

图象的几何变换Word文档格式.docx

//CDlgGeoTrandialog

classCDlgGeoTran:

publicCDialog

{//Construction

public:

CDlgGeoTran(CWnd*pParent=NULL);

//standardconstructor

//DialogData

//{{AFX_DATA(CDlgGeoTran)

enum{IDD=IDD_DLG_GEOTrans};

longm_XOffset;

longm_YOffset;

//}}AFX_DATA

//Overrides

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);

//DDX/DDVsupport

//Implementation

protected:

DECLARE_MESSAGE_MAP()

};

//DlgGeoTran.cpp:

implementationfile

CDlgGeoTran:

:

CDlgGeoTran(CWnd*pParent/*=NULL*/)

CDialog(CDlgGeoTran:

IDD,pParent)

{

//{{AFX_DATA_INIT(CDlgGeoTran)

m_XOffset=0;

m_YOffset=0;

//}}AFX_DATA_INIT

}

voidCDlgGeoTran:

DoDataExchange(CDataExchange*pDX)

{CDialog:

DoDataExchange(pDX);

DDX_Text(pDX,IDC_EDIT_XOffset,m_XOffset);

DDX_Text(pDX,IDC_EDIT_YOffset,m_YOffset);

3)设置图像缩放参数。

在资源视图中添加对话框如下图,然后进行相应的资源参数设置。

添加对话框类【CDlgGeoZoom】,具体代码如下所示:

//DlgGeoZoom.h:

//CDlgGeoZoomdialog

classCDlgGeoZoom:

CDlgGeoZoom(CWnd*pParent=NULL);

//standardconstructor

enum{IDD=IDD_DLG_GEOZoom};

floatm_XZoom;

floatm_YZoom;

DECLARE_MESSAGE_MAP()

//DlgGeoZoom.cpp:

CDlgGeoZoom:

CDlgGeoZoom(CWnd*pParent/*=NULL*/)

CDialog(CDlgGeoZoom:

{//{{AFX_DATA_INIT(CDlgGeoZoom)

m_XZoom=0.0f;

m_YZoom=0.0f;

voidCDlgGeoZoom:

CDialog:

//{{AFX_DATA_MAP(CDlgGeoZoom)

DDX_Text(pDX,IDC_EDIT_XZoom,m_XZoom);

DDV_MinMaxFloat(pDX,m_XZoom,0.25f,4.f);

DDX_Text(pDX,IDC_EDIT_YZoom,m_YZoom);

DDV_MinMaxFloat(pDX,m_YZoom,0.25f,4.f);

//}}AFX_DATA_MAP

4)设置图像旋转参数。

添加对话框类【CDlgGeoRota】,具体代码如下所示:

//DlgGeoRota.cpp:

CDlgGeoRota:

CDlgGeoRota(CWnd*pParent/*=NULL*/)

CDialog(CDlgGeoRota:

m_iRotateAngle=0;

voidCDlgGeoRota:

DDX_Text(pDX,IDC_EDIT_Rotate,m_iRotateAngle);

DDV_MinMaxInt(pDX,m_iRotateAngle,0,360);

5)添加菜单资源项如下图所示。

然后添加消息,具体代码如下所示:

//图像平移

voidCCh1_1View:

OnGeomTran()

//平移位图

//获取文档

CCh1_1Doc*pDoc=GetDocument();

//指向DIB的指针

LPSTRlpDIB;

//指向DIB象素指针

LPSTRlpDIBBits;

//锁定DIB

lpDIB=(LPSTR):

GlobalLock((HGLOBAL)pDoc->

GetHDIB());

//判断是否是8-bpp位图(这里为了方便,只处理8-bpp位图的平移,其它的可以类推)

if(:

DIBNumColors(lpDIB)!

=256)

{//提示用户

MessageBox("

目前只支持256色位图的平移!

"

"

系统提示"

MB_ICONINFORMATION|MB_OK);

//解除锁定

GlobalUnlock((HGLOBAL)pDoc->

return;

LONGlXOffset;

LONGlYOffset;

//创建对话框

CDlgGeoTrandlgPara;

//初始化变量值

dlgPara.m_XOffset=100;

dlgPara.m_YOffset=100;

//显示对话框,提示用户设定平移量

if(dlgPara.DoModal()!

=IDOK)

//获取用户设定的平移量

lXOffset=dlgPara.m_XOffset;

lYOffset=dlgPara.m_YOffset;

//删除对话框

deletedlgPara;

//更改光标形状

BeginWaitCursor();

//找到DIB图像象素起始位置

lpDIBBits=:

FindDIBBits(lpDIB);

//调用TranslationDIB()函数平移DIB

if(TranslationDIB1(lpDIBBits,:

DIBWidth(lpDIB),:

DIBHeight(lpDIB),lXOffset,lYOffset))

{//设置标记

pDoc->

SetModifiedFlag(TRUE);

/更新视图

UpdateAllViews(NULL);

else

分配内存失败!

//恢复光标

EndWaitCursor();

//图像缩放

OnGeomZoom()

{//获取文档

//判断是否是8-bpp位图(这里为了方便,只处理8-bpp位图的缩放,其它的可以类推)

{//提示用户

目前只支持256色位图的缩放!

//缩放比率

floatfXZoomRatio;

floatfYZoomRatio;

CDlgGeoZoomdlgPara;

dlgPara.m_XZoom=0.5;

dlgPara.m_YZoom=0.5;

{

fXZoomRatio=dlgPara.m_XZoom;

fYZoomRatio=dlgPara.m_YZoom;

//创建新DIB

HDIBhNewDIB=NULL;

//调用ZoomDIB()函数转置DIB

hNewDIB=(HDIB)ZoomDIB(lpDIB,fXZoomRatio,fYZoomRatio);

//判断缩放是否成功

if(hNewDIB!

=NULL)

//替换DIB,同时释放旧DIB对象

ReplaceHDIB(hNewDIB);

//更新DIB大小和调色板

InitDIBData();

//设置脏标记

//重新设置滚动视图大小

SetScrollSizes(MM_TEXT,pDoc->

GetDocSize());

//更新视图

//提示用户

//图像旋转

OnGeomRota()

{//获取文档

//判断是否是8-bpp位图(这里为了方便,只处理8-bpp位图的旋转,其它的可以类推)

目前只支持256色位图的旋转!

intiRotateAngle;

CDlgGeoRotadlgPara;

dlgPara.m_iRotateAngle=90;

//显示对话框,提示用户设定旋转角度

{//返回

iRotateAngle=dlgPara.m_iRotateAngle;

//调用RotateDIB()函数旋转DIB

hNewDIB=(HDIB)RotateDIB(lpDIB,iRotateAngle);

//判断旋转是否成功

{//提示用户

4.实验结果

1)图像平移实验结果

图2设置平移量

图3平移结果

2)图像缩放实验结果

图4设定缩放量

图5缩放结果

3)图像旋转实验结果

图6设定旋转角度

图7图像旋转结果

5.实验小结

本次实验完成了图像位移、图像任意角度的旋转、变换的实验内容,但在精度的控制方面还存在缺陷。

另外图像平移、变换等操作的实现程序较为简单,不能完成复杂的操作和处理,而且显示效果方面也有待于修改和改进。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1