VC++的MFC中,如何给基本对话框加上JPG格式的背景图片
5个回答
展开全部
楼上那些人都是扯淡高手。如果是vs2008那么直接使用CImage类的方法可以直接读取jpg文件。他还有个render方法来输出图片。如果是vc6.0那么就需要下载3个文件才可以使用cimage类。呵呵 Image image;
image.Load(L"D:\\用户目录 \\Pictures\\example.jpg");
image.Draw(GetDC()->m_hDC,CRect(0,0,320,240));
CImage类支持以Load方法读取本地磁盘上 的文件,并用Draw方法来显示图片。 CIamge类的成员函数中还有很多可以 Image image;
image.Load(L"D:\\用户目录 \\Pictures\\example.jpg");
image.Draw(GetDC()->m_hDC,CRect(0,0,320,240));
如果是vc2008以上版本如果是vc那么得得下载3个文件包括头文件和lib和dll库包含就可以使用cimage类。可以使用CImage类支持以Load方法读取本地磁盘上 的文件,并用Draw方法来显示图片。 CIamge类的成员函数中还有很多可以
image.Load(L"D:\\用户目录 \\Pictures\\example.jpg");
image.Draw(GetDC()->m_hDC,CRect(0,0,320,240));
CImage类支持以Load方法读取本地磁盘上 的文件,并用Draw方法来显示图片。 CIamge类的成员函数中还有很多可以 Image image;
image.Load(L"D:\\用户目录 \\Pictures\\example.jpg");
image.Draw(GetDC()->m_hDC,CRect(0,0,320,240));
如果是vc2008以上版本如果是vc那么得得下载3个文件包括头文件和lib和dll库包含就可以使用cimage类。可以使用CImage类支持以Load方法读取本地磁盘上 的文件,并用Draw方法来显示图片。 CIamge类的成员函数中还有很多可以
追问
我用的是VC++6.0的,这几天我查阅了资料好像是的要下载SDk。MFC中没有包含CImage类。你那有没有啊,有了发邮箱:1193435796@qq.com。非常感谢。
追答
没有。微软官方有下载。不就是一个头文件一个动态库。一个dll文件。
展开全部
OnPaint重绘
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
CRect rect;
GetClientRect(&rect);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap bmpBackground;
bmpBackground.LoadBitmap(IDB_BITMAP1); //对话框的背景图片
BITMAP bitmap; bmpBackground.GetBitmap(&bitmap);
CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground);
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);
// Do not call CDialog::OnPaint() for painting messages
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
CRect rect;
GetClientRect(&rect);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap bmpBackground;
bmpBackground.LoadBitmap(IDB_BITMAP1); //对话框的背景图片
BITMAP bitmap; bmpBackground.GetBitmap(&bitmap);
CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground);
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);
// Do not call CDialog::OnPaint() for painting messages
追问
bmpBackground.LoadBitmap(IDB_BITMAP1); //对话框的背景图片。这是添加位图的代码吧,要是添加jpg格式应该还有路径啥的。依然谢谢你!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
更多追问追答
追问
MFC中的GDI+支持好多格式的图片呢,但是我不知道具体是怎么使用的,没有现成的例子可以模仿。我想把JPG格式的添加为背景,随后还要在背景上添加位图呢。依然谢谢呢!
追答
GDI+是Windows XP中的一个子系统,主要负责在显示屏幕和打印设备输出有关信息。
而MFC的GDI+的API,本质上也是把JPG转换成bmp的。我刚搜了下,网上有很多GDI+的API使用JPG图片的例子。你随便搜GDI+ JPG 就行了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我用过的显示一幅bmp图片
bool CRandomDlg::ShowBmp(CDC *dc,CRect rcclient,LPCTSTR bmp)
{
CBitmap m_bmp;
HBITMAP hbmp = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),
bmp, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION|LR_LOADFROMFILE);
if( hbmp == NULL )
return FALSE;
m_bmp.Attach( hbmp );
DIBSECTION ds;
BITMAPINFOHEADER &bminfo = ds.dsBmih;
m_bmp.GetObject( sizeof(ds), &ds );
CDC memdc;
memdc.CreateCompatibleDC(dc);
CBitmap bitmap;
bitmap.CreateCompatibleBitmap(dc, rcclient.Width(), rcclient.Height());
memdc.SelectObject( &bitmap );
CWnd::DefWindowProc(WM_PAINT, (WPARAM)memdc.m_hDC , 0);
CDC maskdc;
maskdc.CreateCompatibleDC(dc);
CBitmap maskbitmap;
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);
CBrush brush;
brush.CreatePatternBrush(&m_bmp);
dc->FillRect(rcclient, &brush);
dc->BitBlt(rcclient.left, rcclient.top, rcclient.Width(), rcclient.Height(),
&memdc, rcclient.left, rcclient.top,SRCPAINT);
brush.DeleteObject();
return TRUE;
}
bool CRandomDlg::ShowBmp(CDC *dc,CRect rcclient,LPCTSTR bmp)
{
CBitmap m_bmp;
HBITMAP hbmp = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),
bmp, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION|LR_LOADFROMFILE);
if( hbmp == NULL )
return FALSE;
m_bmp.Attach( hbmp );
DIBSECTION ds;
BITMAPINFOHEADER &bminfo = ds.dsBmih;
m_bmp.GetObject( sizeof(ds), &ds );
CDC memdc;
memdc.CreateCompatibleDC(dc);
CBitmap bitmap;
bitmap.CreateCompatibleBitmap(dc, rcclient.Width(), rcclient.Height());
memdc.SelectObject( &bitmap );
CWnd::DefWindowProc(WM_PAINT, (WPARAM)memdc.m_hDC , 0);
CDC maskdc;
maskdc.CreateCompatibleDC(dc);
CBitmap maskbitmap;
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);
CBrush brush;
brush.CreatePatternBrush(&m_bmp);
dc->FillRect(rcclient, &brush);
dc->BitBlt(rcclient.left, rcclient.top, rcclient.Width(), rcclient.Height(),
&memdc, rcclient.left, rcclient.top,SRCPAINT);
brush.DeleteObject();
return TRUE;
}
追问
添加位图为背景我做过。不过依然谢谢你!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
除了cbitmap类,还有新的cimage类,他是加强的cbitmap类,试试吧,把楼上的替换一下应该可以
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询