下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、VCPicture控件的加载图像的使用总结非动态显示图片(即图片先通过资源管理器载入,有一个固定ID)动态载入图片(即只需要在程序中指定图片的路径即可载入)为方便说明,我们已经建好一个基于对话框的工程,名为Ttest,对话框类为CTestDlg(一)vcpicturef空件非动态载入图片方法1先从最简单的开始用picture控件来实现步骤:先在资源里Import张图片,ID为IDB_BITMAP2,然后在对话框上添加一个picture控件,右键点击打开属性将type下拉框选择BITMAP,紧跟着下面就出现一个Image下拉框,拉开就会看到所有已经载入好的图片,选择你要的图片.运行程序即可看到.
2、方法2.vcpicture控件通过背景图同样如上,先载入一张图片,ID为IDB_BITMAP2TestDlg.h中CBrushm_brBk;/在public中定义TestDlg.cpp中在初始化函数OnInitDialog()中加入:BOOLCTestDlg:OnInitDialog()CDialog:OnInitDialog();CBitmapbmp;bmp.LoadBitmap(IDB_BITMAP2);m_brBk.CreatePatternBrush(&bmp);bmp.DeleteObject();returnTRUE;/returnTRUEunlessyousetthefocust
3、oacontrol在打开类向导,找到WM_CTLCOLOR消息,重载得对应函数OnCtlColor(),添加如下:HBRUSHCTestDlg:OnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor)HBRUSHhbr=CDialog:OnCtlColor(pDC,pWnd,nCtlColor);if(pWnd=this)returnm_brBk;returnhbr;(二)vcpicture控件动态载入图片.方法3.图像控件(本例用KoDak图像编辑控件)1.首先应该保证系统中有这个控件。注意,它不能单独使用,必须和其他几个控件(特别是Imgcmn.dll)同使用
4、。如果没有,从别的机器上copy过来即可。这几个文件是Imgadmin.ocx,Imgcmn.dll,Imgedit.ocx,Imgscan.ocx,Imgshl.dll,Imgthumb.ocx,Imgutil.dll,把它们copy到windowssystem目录下,然后用regsvr32.exe将它们分别注册。2.打开工程,进入资源管理器,在对话框上单击右键,单击InsertActivexcontrol选择Kodak图象编辑控件,大小任意。在对话框上选中该控件,为其添加变量:m_ctrlPicture。在BOOLCTestDlg:OnInitDialogO添加如下:BOOLCTestDl
5、g:OnInitDialog()CDialog:OnInitDialog();m_ctrlPicture.SetImage(aa.jpg);/保证图像在工程目录下,也可以写绝对路径m_ctrlPicture.Display();returnTRUE;/returnTRUEunlessyousetthefocustoacontrol/EXCEPTION:OCXPropertyPagesshouldreturnFALSE编译运行就OK了,此种方法的好处就是可能针对多种图像格式.方法4.vcpicture控件通过CBitmap,HBITMAP,直接用OnPaint()绘制首先在CTestDlg类中声
6、明一个变量:CBitmapm_bmp;然后我们在对话框中加入一个picture标签,名为IDC_STATIC1,然后:BOOLCDisplayPic:OnInitDialog()CDialog:OnInitDialog();if(m_bmp.m_hObject!=NULL)/判断m_bmp.DeleteObject();/载入图片HBITMAPhbmp=(HBITMAP):LoadImage(AfxGetInstanceHandle(),c:aaa.bmp,IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION|LR_LOADFROMFILE);if(hbmp=NULL)re
7、turnFALSE;/该断程序用来取得加载的BMP的信息/m_bmp.Attach(hbmp);DIBSECTIONds;BITMAPINFOHEADER&bminfo=ds.dsBmih;m_bmp.GetObject(sizeof(ds),&ds);intcx=bminfo.biWidth;/得到图像宽度intcy=bminfo.biHeight;/得到图像高度/得到了图像的宽度和高度后,我们就可以对图像大小进行适应,/即调整控件的大小,让它正好显示一张图片/CRectrect;GetDlgItem(IDC_STATIC1)-GetWindowRect(&rect);ScreenToCli
8、ent(&rect);GetDlgItem(IDC_STATIC1)-MoveWindow(rect.left,rect.top,cx,cy,true);/调整大小returnTRUE;/returnTRUEunlessyousetthefocustoacontrol/EXCEPTION:OCXPropertyPagesshouldreturnFALSE图片加载成功了,标签大小也适应了,下面就是绘制绘制图像了,打开类向导,重载WM_PAINT消息voidCDisplayPic:OnPaint()/以下三种情况任选一种会是不同效果(只能一种存在)/CPaintDCdc(this);/若用此句,得
9、到的是对话框的DC,图片将被绘制在对话框上.CPaintDCdc(GetDlgltem(IDC_STATICl);/用此句,得到picture控件的DC,图像将被绘制在控件上/CDCdc;/dc.m_hDC=:GetDC(NULL);/若用此两句,得到的是屏幕的DC,图片将被绘制在屏幕上/CRectrcclient;GetDlgItem(IDC_STATIC1)-GetClientRect(&rcclient);CDCmemdc;memdc.CreateCompatibleDC(&dc);CBitmapbitmap;bitmap.CreateCompatibleBitmap(&dc,rccli
10、ent.Width(),rcclient.Height();memdc.SelectObject(&bitmap);CWnd:DefWindowProc(WM_PAINT,(WPARAM)memdc.m_hDC,0);CDCmaskdc;maskdc.CreateCompatibleDC(&dc);CBitmapmaskbitmap;maskbitmap.CreateBitmap(rcclient.Width(),rcclient.Height(),1,1,NULL);maskdc.SelectObject(&maskbitmap);maskdc.BitBlt(0,0,rcclient.Width(),rcclient.Height(),&memdc,rcclient.left,rcclient.top,SRCCOPY);CBrushbrush;brush.CreatePatternBrush(&m_bmp);dc.FillRect(rcclient,&brush);dc.BitBlt(rcclient.left,rcclient.top,rcclient.W
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 装卸运输合同中赔偿责任
- 短期租赁合同协议
- 旅游景点静压桩施工合同
- 地下通道挖机设备租赁合同
- 建筑工程职业健康责任合同范本
- 无薪留职协议书
- 通讯设备顾问聘用协议
- 人工智能电气设备安装协议
- 拳击教练聘用合同范本
- 节能项目招投标合同样本
- 消防安全培训内容
- 2024-2030年铝型材行业市场深度调研及前景趋势与投资战略研究报告
- 2024-2030年辣椒种植行业市场深度分析及发展策略研究报告
- 变电站绿化维护施工方案
- 校园展美 课件 2024-2025学年人美版(2024)初中美术七年级上册
- 2024版《糖尿病健康宣教》课件
- 2024CSCO结直肠癌诊疗指南解读
- (正式版)QBT 2174-2024 不锈钢厨具
- 监控维修施工方案
- 是谁杀死了周日
- 混凝土早强剂检验报告(出厂)
评论
0/150
提交评论