PersonalCorpus 版 (精华区)
发信人: hjt (浪子小猴◎工作狂◎这次,我不会放弃), 信区: VisualC
标 题: 显示bmp图像
发信站: 哈工大紫丁香 (2002年12月16日19:33:59 星期一), 站内信件
这个问题最近老有人问,就写这点吧,其他的如DIB图象的显示,jpg什么的还是
自己看看书,或者以后再总结吧
1,将bmp图象import到资源中,在OnDraw中加入:
CBitmap bitmap;
BITMAP bm;
bitmap.LoadBitmap(IDB_BITMAP1);
bitmap.GetBitmap(&bm);
CDC dcMem;
dcMem.CreateCompatibleDC(pDC);
dcMem.SelectObject(&bitmap);
int w,h;
w = bm.bmWidth;
h = bm.bmHeight;
pDC->BitBlt(0,0,w,h,&dcMem,0,0,SRCCOPY);
pDC->StretchBlt(0,h+10,w*2,h*2,&dcMem,0,0,w,h,SRCCOPY);
2,手动打开一幅图像:
OnFileOpen()
{
char szFileFilter[]="BMP File(*.BMP)|*.BMP|";
CString strBmpname;
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);
if(IDOK==dlg.DoModal())
{
strBmpname.Format("%s",dlg.GetPathName());
Showpicture(strBmpname);
}
}
Showpicture(CString strbmpname)
{
if(State==0)
{
HBITMAP
hBitmap=(HBITMAP)LoadImage(NULL,_T(strBmpname),IMAGE_BITMAP,0,0,
LR_CREATEDIBSECTION|LR_DEFAULTSIZE|LR_LOADFROMFILE);
m_bitmap.Attach(hBitmap);
State=1;
}
Invalidate();
}
OnDraw()
{
//..........
if(State==1)
{
CDC dcImage;
if(!dcImage.CreateCompatibleDC(pDC))
return;
BITMAP bm;
m_bitmap.GetBitmap(&bm); //show the image
dcImage.SelectObject(&m_bitmap);
pDC->BitBlt(0,0,bm.bmWidth,bm.bmHeight,&dcImage,0,0,SRCCOPY);
}
}
其中m_bitmap为CBitmap成员变量
State为标志位,在构造函数中初始化为0;
3.
要在对话框中显示图片,那就太简单了,在对话框中添加一个picture控件,往资
源中import你想加入的bmp图象,再在picture控件的属性中的
image项中输入import的图片的资源号(如IDC_BITMAP1)就可以了
--
╭─────────────────────────────╮
1.背靠着大树,但我不是大树 —— 白岩松
2.不会编程序的博士我不要 —— 陈老师
3.没有不好的语言,只有不好的程序员 —— sun
╰─────────────────────────────╯
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 159.226.42.8]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:16.527毫秒