DrawImage BitBlt StretchBlt画PNG图片的方法
2011-11-03 16:24
1111 查看
在对话框的OnPaint() 函数中添加代码:
以本人的代码为例:
//Graphics graphics
//graphics.DrawImage方法使用
void UserList::OnPaint()
{
CPaintDC dc(this); // device context for painting
//第一种画图的方法graphics.DrawImage拉伸图片
CRect rect;
GetClientRect(&rect);
Graphics graphics(dc.m_hDC);
//加载PNG图片
Bitmap background(L".\\userlist\\classlist_top.png");
graphics.DrawImage(&background,0,0,rect.Width(),rect.Height());
CDialog::OnPaint();
}
void UserList::OnPaint()
{
CPaintDC dc(this); // device context for painting
//加载PNG图片
Bitmap background(L".\\userlist\\classlist_top.png");
//第二种画图的方法BitBlt原始图片
CRect rc;
CDC MemDC;
CBitmap cbitmap;
CBitmap* pOldBmp = NULL;
HBITMAP hBitmap;
CDC * pDC = GetDC();
// Bitmap To HBITMAP
// HBITMAP To CBitmap *
background.GetHBITMAP(Color(0,0,0),&hBitmap); // Bitmap To HBITMAP
CBitmap* cBitmap = CBitmap::FromHandle(hBitmap); // HBITMAP To CBitmap *
//显示图片
MemDC.CreateCompatibleDC(pDC);
pOldBmp = MemDC.SelectObject(cBitmap);
GetClientRect(&rc);
dc.BitBlt(0, 0, rect.Width(),rect.Height(), &MemDC, 0, 0, SRCCOPY);
//releaseDC
MemDC.SelectObject(pOldBmp);
MemDC.DeleteDC();
cBitmap->DeleteObject();
CDialog::OnPaint();
}
void UserList::OnPaint()
{
CPaintDC dc(this); // device context for painting
//加载PNG图片
Bitmap background(L".\\userlist\\classlist_top.png");
//第三种画图的方法StretchBlt平铺图片
CRect rc;
CDC MemDC;
CBitmap cbitmap;
CBitmap* pOldBmp = NULL;
HBITMAP hBitmap;
CDC * pDC = GetDC();
// Bitmap To HBITMAP
// HBITMAP To CBitmap *
background.GetHBITMAP(Color(0,0,0),&hBitmap); // Bitmap To HBITMAP
CBitmap* cBitmap = CBitmap::FromHandle(hBitmap);// HBITMAP To CBitmap *
//显示图片
MemDC.CreateCompatibleDC(pDC);
pOldBmp = MemDC.SelectObject(cBitmap);
GetClientRect(&rc);
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&MemDC,0,0,background.GetWidth(), background.GetHeight(), SRCCOPY);
//releaseDC
MemDC.SelectObject(pOldBmp);
MemDC.DeleteDC();
cBitmap->DeleteObject();
CDialog::OnPaint();
}
以本人的代码为例:
//Graphics graphics
//graphics.DrawImage方法使用
void UserList::OnPaint()
{
CPaintDC dc(this); // device context for painting
//第一种画图的方法graphics.DrawImage拉伸图片
CRect rect;
GetClientRect(&rect);
Graphics graphics(dc.m_hDC);
//加载PNG图片
Bitmap background(L".\\userlist\\classlist_top.png");
graphics.DrawImage(&background,0,0,rect.Width(),rect.Height());
CDialog::OnPaint();
}
void UserList::OnPaint()
{
CPaintDC dc(this); // device context for painting
//加载PNG图片
Bitmap background(L".\\userlist\\classlist_top.png");
//第二种画图的方法BitBlt原始图片
CRect rc;
CDC MemDC;
CBitmap cbitmap;
CBitmap* pOldBmp = NULL;
HBITMAP hBitmap;
CDC * pDC = GetDC();
// Bitmap To HBITMAP
// HBITMAP To CBitmap *
background.GetHBITMAP(Color(0,0,0),&hBitmap); // Bitmap To HBITMAP
CBitmap* cBitmap = CBitmap::FromHandle(hBitmap); // HBITMAP To CBitmap *
//显示图片
MemDC.CreateCompatibleDC(pDC);
pOldBmp = MemDC.SelectObject(cBitmap);
GetClientRect(&rc);
dc.BitBlt(0, 0, rect.Width(),rect.Height(), &MemDC, 0, 0, SRCCOPY);
//releaseDC
MemDC.SelectObject(pOldBmp);
MemDC.DeleteDC();
cBitmap->DeleteObject();
CDialog::OnPaint();
}
void UserList::OnPaint()
{
CPaintDC dc(this); // device context for painting
//加载PNG图片
Bitmap background(L".\\userlist\\classlist_top.png");
//第三种画图的方法StretchBlt平铺图片
CRect rc;
CDC MemDC;
CBitmap cbitmap;
CBitmap* pOldBmp = NULL;
HBITMAP hBitmap;
CDC * pDC = GetDC();
// Bitmap To HBITMAP
// HBITMAP To CBitmap *
background.GetHBITMAP(Color(0,0,0),&hBitmap); // Bitmap To HBITMAP
CBitmap* cBitmap = CBitmap::FromHandle(hBitmap);// HBITMAP To CBitmap *
//显示图片
MemDC.CreateCompatibleDC(pDC);
pOldBmp = MemDC.SelectObject(cBitmap);
GetClientRect(&rc);
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&MemDC,0,0,background.GetWidth(), background.GetHeight(), SRCCOPY);
//releaseDC
MemDC.SelectObject(pOldBmp);
MemDC.DeleteDC();
cBitmap->DeleteObject();
CDialog::OnPaint();
}
相关文章推荐
- vc++加载透明png图片方法——GDI+和CImage两种
- 两种修改png图片颜色方法的对比
- IE6 PNG图片透明度问题的方法
- VC++图片控件(Picture Control)显示资源位图(BMP)、文件位图(BMP)、其它格式文件图片(JPG\PNG\BMP)的方法
- PNG图片背景透明-简单方法
- VC下加载JPG/GIF/PNG图片的两种方法(转)
- 用 javascript 修复 IE 下 PNG 图片不能透明显示的方法
- DrawImage BitBlt StretchBlt画PNG图片的方法
- 【技术】IE6下png图片背景透明的方法
- 加载png图片的两种方法 - GDI+和CImage
- 【VS开发】VC下加载JPG/GIF/PNG图片的两种方法
- IE6下png透明图片正常显示的解决方法
- png图片在ie8浏览器下有黑色边框的解决方法
- [vc] vc++加载透明png图片的两种方法-GDI+和CImage
- mobile下使用png图片的三种方法
- PNG图片压缩方法
- Android png透明图片转jpg时背景变黑的解决方法
- IE6中png背景图片透明的最好处理方法
- png图片压缩方法
- 3种修复IE6 PNG图片透明度问题的方法