怎么查别人有没有蹭网能把别人的对话框砸掉的gif跪求

MFC 对话框Picture Control(图片控件)中静态和动态显示Bmp图片 - 推酷
MFC 对话框Picture Control(图片控件)中静态和动态显示Bmp图片
最近有同学问我如何实现MFC基于对话框在图片控件中加载图片?其实使用MFC显示图片的方法各种各样,但是还是有些同学不知道怎样显示.以前在《数字图像处理》课程中完成的软件都是基于单文档的程序,这里介绍两种在对话框picthre控件中显示BMP图片的最简单基础的方法.
~~方法可能并不完美,高手忽略,但是提供一种能运行的方法,希望对刚接触这方面知识的同学有所帮助.可能你觉得文章过于简单或者有些过于详细叙述(点到即可我并不反对),但也为哪些入门同学想想,当初自己也是一头雾水.
一.静态显示bmp图片
创建MFC基于对话框程序,添加一个button1和picture控件,其中“资源视图”中编辑picture控件ID为:IDC_STATIC_PIC.
&&&&&&& 2.在&资源视图&(如果没有,视图中可调用出来)中右键鼠标Dialog处,选择&添加资源&.在对话框中选择Bitmap,点击&导入&,选择本地bmp图片(
建议位图放置在res文件夹中)
.它会添加一张IDB_BITMAP1图片
3.点击button1按钮,在生成的函数中添加如下代码:
void CShowBmpDlg::OnBnClickedButton1()
//从资源中加载图片
//加载指定位图资源 Bmp图片ID
bitmap.LoadBitmap(IDB_BITMAP1);
//获取对话框上的句柄 图片控件ID
CStatic *p=(CStatic *)GetDlgItem(IDC_STATIC_PIC);
//设置静态控件窗口风格为位图居中显示
p-&ModifyStyle(0xf,SS_BITMAP|SS_CENTERIMAGE);
//将图片设置到Picture控件上
p-&SetBitmap(bitmap);
4.运行结果如下图所示:
&&&&&&&&通过上面的截图我们可以发现:该方法是通过资源ID来获取BMP图片的,所以我称之为静态的方法.同时,可能你见到过在添加Picture控件时修改其Type为Bitmap在通过image选择ID的方法.但这里是通过代码来实现的,而且ModifyStyle函数的功能就相当于设置其属性.
~~上图很明显的反应了它显示图片时,如果图片尺寸超过控件size只能显示部分图片.方法我只叙述到这,需要你自己去尝试.曾经在单文档中显示BMP图片时,是通过重载onpaint事件,GetClientRect获取尺寸调用StretchBlt(图像可拉伸压缩)实现(参照
其实LoadBitmap函数已被LoadImage替代,该函数用于装载图标\光标\位图.如下代码所示
可以实现同样的效果
,其中Rockies.bmp为本地文件,与程序相同文件夹.
void CShowBmpDlg::OnBnClickedButton1()
//获取对话框上图片控件的句柄
CStatic* pWnd = (CStatic*)GetDlgItem(IDC_STATIC_PIC);
//设置静态控件窗口风格为位图居中显示
pWnd-&ModifyStyle(0xf,SS_BITMAP|SS_CENTERIMAGE);
//显示图片
pWnd-&SetBitmap((HBITMAP)::LoadImage(NULL,
_T(&Rockies.bmp&),
//资源号或本地文件名
IMAGE_BITMAP,
//装载位图 IMAGE_CURSOR光标 IMAGE_ICON图标
//宽度 0为默认大小
//高度 像素为单位
LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE));
二.动态加载bmp图片
动态添加的方法一样,只是添加代码如下(这结合我以前的代码完成).主要的步骤是:
&&&&&&& 1.先定义打开文件对话框,通过它获取bmp图片,其中dlg.DoMal()==IDOK表示按下确认按钮,实现后面操作.如果你学过C#就会发现它的OpenFileDialog控件与这个有些类似.
&&&&&&& 2.然后,获取读取文件的路径和后缀,确保其为bmp时执行读取图片信息,在&
&中,我曾详细讲述过如何读取bmp图片,这里也是二进制读取文件,读取其文件头(BITMAPFILEHEADER)、信息头(BITMAPINFOHEADER)、获取其位图数据.
&&&&&&& 3.最后显示图像到Picture控件中,并通过GetClientRect函数获取矩形区域,显示图像.
void CShowBmpDlg::OnBnClickedButton1()
//打开文件 定义四种格式的文件bmp gif jpg tiff
filter=&所有文件(*.bmp,*.jpg,*.gif,*tiff)|*.*.*.*.tiff| BMP(*.bmp)|*.bmp| JPG(*.jpg)|*.jpg| GIF(*.gif)|*.gif| TIFF(*.tiff)|*.tiff||&;
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,filter,NULL);
//按下确定按钮 dlg.DoModal() 函数显示对话框
if( dlg.DoModal() == IDOK )
//打开对话框获取图像信息
CString BmpName = dlg.GetPathName();
//获取文件路径名
如D:\pic\abc.bmp
CString EntName = dlg.GetFileExt();
//获取文件扩展名
EntName.MakeLower();
//将文件扩展名转换为一个小写字符
pare(_T(&bmp&)) == 0)
//定义变量存储图片信息
BITMAPINFO *pBmpI
//记录图像细节
BYTE *pBmpD
//图像数据
BITMAPFILEHEADER bmpH //文件头
BITMAPINFOHEADER bmpI
CFile bmpF
//记录打开文件
//以只读的方式打开文件 读取bmp图片各部分 bmp文件头 信息 数据
if(!bmpFile.Open(BmpName, CFile::modeRead|CFile::typeBinary))
if (bmpFile.Read(&bmpHeader,sizeof(BITMAPFILEHEADER)) != sizeof(BITMAPFILEHEADER))
if (bmpFile.Read(&bmpInfo,sizeof(BITMAPINFOHEADER)) != sizeof(BITMAPINFOHEADER))
pBmpInfo = (BITMAPINFO *)new char[sizeof(BITMAPINFOHEADER)];
//为图像数据申请空间
memcpy(pBmpInfo,&bmpInfo,sizeof(BITMAPINFOHEADER));
DWORD dataBytes = bmpHeader.bfSize - bmpHeader.bfOffB
pBmpData = (BYTE*)new char[dataBytes];
bmpFile.Read(pBmpData,dataBytes);
bmpFile.Close();
//显示图像
CWnd *pWnd=GetDlgItem(IDC_STATIC_PIC); //获得pictrue控件窗口的句柄
pWnd-&GetClientRect(&rect); //获得pictrue控件所在的矩形区域
CDC *pDC=pWnd-&GetDC(); //获得pictrue控件的DC
pDC-&SetStretchBltMode(COLORONCOLOR);
StretchDIBits(pDC-&GetSafeHdc(),0,0,rect.Width(),rect.Height(),0,0,
bmpInfo.biWidth,bmpInfo.biHeight,pBmpData,pBmpInfo,DIB_RGB_COLORS,SRCCOPY);
运行程序显示结果如下图所示,点击按钮打开图片,显示图片.
总结:通过这个程序你可以很明显的看到动态加载图片由于是通过获取picture控件矩形来显示图的,图像被拉伸了.而且代码很好的反应了如何获取bmp图像的方法.通过静态的和动态的两种方法讲述.
~~最后希望该文章对大家有所帮助,如果文章中有错误或不足之处,还请海涵.
(By:Eastmount
夜2点半 原创CSDN
PS:《数字图像处理》课程希望大家也可以学习下,你可以自己完成一个软件,你将对图像有更深的认识.以前我们要求实现的功能就包括:图像载入保存、采样量化、直方图显示、线性和非线性变换(对比度拉伸、图像均衡化)、几何运算(最近邻差值和双线性差值)、几何变换(平移、反转、旋转)、图像增强(平滑、锐化Laplacian等各种算子)、边缘检测、图像编码压缩(Huffman编码和游程编码)、图像分割复原、二值图像细化等功能.记得最蛋疼的是DICOM医学图像在Android显示与处理花了很长时间才完成的.
已发表评论数()
&&登&&&陆&&
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见后使用快捷导航没有帐号?
新人欢迎积分1 阅读权限50积分1533精华0UID帖子金钱4470 威望0
Lv.5, 积分 1533, 距离下一级还需 967 积分
UID帖子威望0 多玩草2 草
我喜欢 1块钱 ~~~~~~~~~~~~~~~~~~~~~
新人欢迎积分1 阅读权限30积分201精华0UID帖子金钱265 威望-1
Lv.3, 积分 201, 距离下一级还需 49 积分
UID帖子威望-1 多玩草0 草
希望大家踊跃发言,我顶先,所以我想以后得好好的加油& &我想是这样的
新人欢迎积分0 阅读权限80积分19256精华0UID帖子金钱18989 威望0
WCCEO (厕所首席)
Lv.8, 积分 19256, 距离下一级还需 744 积分
UID帖子威望0 多玩草0 草
严雅菲 发表于
谢谢木马~~~~~
亲我了 要负责啊
极致的浪漫是极不体面的 它是一条歧路走到黑
是为得一人心 敢负天下人 是让这世上除了我 没有人能让你不高兴。
新人欢迎积分1 阅读权限90积分34253精华0UID帖子金钱62298 威望0
?、不乱于心,不困于情。不畏将来,不念过往。如此,安好。
Lv.9, 积分 34253, 距离下一级还需 747 积分
UID帖子威望0 多玩草0 草
严雅菲 发表于
哟西没事你还逛逛贴吧唷
一直都有在逛好吗。
/u/【微博求粉】需要上分的请PM″。
关于某个人,我们都有着各自不能释怀的伤,怀念或悔恨。我说,自作自受。 你说。作茧自缚。&&End.
笨笨的妞妞
新人欢迎积分0 阅读权限80积分11173精华0UID帖子金钱21642 威望2
为何从前爱的极度容易
Lv.8, 积分 11173, 距离下一级还需 8827 积分
UID帖子威望2 多玩草97 草
我靠,俺都被电到了。
- 我们都太容易让一首歌带自己对号入座,听见一首歌的时候,好像自己就行走在歌词。
新人欢迎积分0 阅读权限30积分51精华0UID帖子金钱564 威望0
Lv.3, 积分 51, 距离下一级还需 199 积分
UID帖子威望0 多玩草0 草
骚不见了, 怎么破。
新人欢迎积分0 阅读权限20积分40精华0UID帖子金钱80 威望0
Lv.2, 积分 40, 距离下一级还需 10 积分
UID帖子威望0 多玩草0 草
不要这么诱人,,好么
新人欢迎积分1 阅读权限50积分2017精华0UID帖子金钱4192 威望0
Lv.5, 积分 2017, 距离下一级还需 483 积分
UID帖子威望0 多玩草0 草
家门吗??
新人欢迎积分1 阅读权限40积分885精华0UID帖子金钱1099 威望0
Lv.4, 积分 885, 距离下一级还需 115 积分
UID帖子威望0 多玩草0 草
严雅菲 发表于
嘿嘿 太会说话了~
还好哇,就是觉得那么个意思而已啦
新人欢迎积分0 阅读权限30积分139精华0UID帖子金钱488 威望0
Lv.3, 积分 139, 距离下一级还需 111 积分
UID帖子威望0 多玩草0 草
这是锻炼人心态的一个考验!努力吧
且行且珍惜
新人欢迎积分1 阅读权限70积分9581精华0UID帖子金钱4147 威望3
他们总说想要去遥远的地方 而我总想去有你的地方
Lv.7, 积分 9581, 距离下一级还需 419 积分
UID帖子威望3 多玩草50 草
严雅菲 发表于
邪恶滴人唷
我才没有。我说你嘴性感。哈哈
新人欢迎积分1 阅读权限60积分4314精华0UID帖子金钱4169 威望0
Lv.6, 积分 4314, 距离下一级还需 686 积分
UID帖子威望0 多玩草0 草
我理解我理解....
新人欢迎积分1 阅读权限70积分5916精华0UID帖子金钱500 威望9
幡翻旗鼓天下战,谁为将军结断肠
Lv.7, 积分 5916, 距离下一级还需 4084 积分
UID帖子威望9 多玩草1659 草
好吧,壮哉我大诺克萨斯。
新人欢迎积分1 阅读权限50积分1515精华0UID帖子金钱1786 威望0
Lv.5, 积分 1515, 距离下一级还需 985 积分
UID帖子威望0 多玩草0 草
严雅菲 发表于
怎么不玩台服捏~
因為人在大陸阿= =|||
不然怎麼可能....呵呵
已脫離大陸國服...
人在台灣 要打台服請聯絡~
LOL战斗力9000以上
卓越特权勋章
在论坛特权商城中享有用论坛金币购买YY会员的特权
元宝专属一阶勋章。已绝版
初级人缘勋章
初级人缘勋章
节日守望者
节日守望者
需要金钱:1100
Powered by
手机盒子客户端点击或扫描下载MFC 关于在对话框上动态创建的编辑框控件,鼠标点击事件如何获取啊
&来源:读书人网&【读书人网():综合教育门户网站】
MFC 关于在对话框上动态创建的编辑框控件,鼠标点击事件怎么获取啊?MFC 关于在对话框上动态创建的编辑框控
MFC 关于在对话框上动态创建的编辑框控件,鼠标点击事件怎么获取啊?MFC&关于在对话框上动态创建的编辑框控件,鼠标点击事件怎么获取啊?还有动态创建的静态文本框,我想让他显示边框,但是加了显示边框的属性参数后,上面就显示不了文字了。
[解决办法]"对话框上动态创建的编辑框控件"&响应函数&要&自己写,&向导&帮不了忙,&可以&先&拖个&控件&模拟1528人阅读
PictureEx图片显示类支持以下格式的图片:GIF (including animated GIF87a and GIF89a), JPEG, BMP, WMF, ICO, CUR等,我特别推崇的是可以做出动画,而且轻而易举,确实很COOL。下面是详细的编程过程:1. 新建项目:在VC6中用MFC新建一个基于对话框的GifDemo应用程序,接受所有缺省选项即可;2.在项目中插入文件:把PictureEx.h,PictureEx.cpp文件copy 到项目文件夹下,Project-&Add to Project-&Files中选上PictureEx.h,PictureEx.cpp, I3.加入图片控件:从对话框控件中把Picture Control(图片控件)拖入主对话框中,修改其属性:ID:IDC_GIF,TYPE:Rectangle,其余接受缺省选项。再在ClassWiard中为IDF_GIF加入CSatic控制变量m_GifPic, 注意看一下,GifDemoDlg.h中是否加上了#include "PictureEx.h"(由ClassWiard加入)。然后将CSatic m_GifPgjq更改成CPictureEx m_GifP4.加载动画文件:先将要加载的动画文件放到 res 资源文件夹下,再将其Import进项目中,由于MFC只支持256BMP文件的图片,因此,我们要新建一个图片类型:"GIF",我在这里将我网站的宣传图片roaring.gif放进去 (希望大家多支持),并将其ID修改成:IDR_GIFROARING。import(导入)gif动画的详细过程:在resourceview窗口中,单击鼠标右键,在出现的环境菜单中选择&import...&命令,会出现&import resource&选择文件对话框,文件类型选择&所有文件(*.*)&,open as 选项为"auto",再选择动画文件所在目录,选上要载入的动画文件 roaring.gif,再单击 import,由于gif动画类型不是vc默认的文件类型,这时会出现"custom resource type"对话框,键入&"gif"&,再单击ok,然后再修改其id。5.在程序的适当位置添入加载代码: 这里,我们在CGifDemoDlg::OnInitDialog()函数中加入如下代码:// TODO: Add extra initialization hereif (m_GifPic.Load(MAKEINTRESOURCE(IDR_GIFROARING),_T("Gif")))m_GifPic.Draw();如果仅仅把动画载入,到这就可以了,运行一下,应该看看您的的成果了。下面附带说说如何将这幅动画制作成超链接,以后,咱们也可以宣传自已的公司、网站或产品了。6.利用ClassWiard加入一个LButtonDown鼠标左键消息处理函数CGifDemoDlg::OnLButtonDown(UINT nFlags, CPoint point),&&添入如下代码:void CGifDemoDlg::OnLButtonDown(UINT nFlags, CPoint point) {// TODO: Add your message handler code here and/or call defaultCRm_GifPic.GetWindowRect(&rect);ScreenToClient(&rect);if (rect.PtInRect(point))ShellExecute(AfxGetMainWnd()-&m_hWnd,_T("open"),_T("http://roaringwind."),_T(""),NULL,0);CDialog::OnLButtonDown(nFlags, point);}我在这儿将我主页的地址放上了,运行,点击动画图片就能进入我的站点的了。当然要是能象所有的超链接一样,能将鼠标变成手形,就更好了。7.改变鼠标形状:将一个鼠标文件放在res文件夹中,IMPORT,ID:IDC_CURSOR1,利用ClassWiard加入一个WM_SETCURSOR消息处理函数CGifDemoDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message),&&添入如下代码:BOOL CGifDemoDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) {// TODO: Add your message handler code here and/or call defaultCRm_GifPic.GetWindowRect(&rect);ScreenToClient(&rect);CPGetCursorPos(&point);ScreenToClient(&point);if (rect.PtInRect(point) && m_hCursor){SetCursor(m_hCursor);return TRUE;};return CDialog::OnSetCursor(pWnd, nHitTest, message);}
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:38291次
排名:千里之外
原创:32篇
评论:16条
(1)(2)(12)(18)

我要回帖

更多关于 怎么看别人有没有蹭网 的文章

 

随机推荐