(1)從文件中加載圖片

十多年專注成都網(wǎng)站制作,成都定制網(wǎng)站,個(gè)人網(wǎng)站制作服務(wù),為大家分享網(wǎng)站制作知識(shí)、方案,網(wǎng)站設(shè)計(jì)流程、步驟,成功服務(wù)上千家企業(yè)。為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù),專注于成都定制網(wǎng)站,高端網(wǎng)頁制作,對(duì)成都陽臺(tái)護(hù)欄等多個(gè)行業(yè),擁有多年的網(wǎng)站制作經(jīng)驗(yàn)。
void CScale3DCUserManageView::OnDraw(CDC* pDC)
{
// TODO: 在此添加專用代碼和/或調(diào)用基類
CImage image; //創(chuàng)建圖片類
USES_CONVERSION;
INT re = _access(W2A(m_strUserPicPath), 0);//判文件是否存在
if (re == -1)return;
image.Load(m_strUserPicPath); //根據(jù)圖片路徑加載圖片
CRect rect;//定義矩形類
int cx = image.GetWidth();//獲取圖片寬度
int cy = image.GetHeight();//獲取圖片高度
m_picUserIcon.GetClientRect(&rect);//獲得pictrue控件所在的矩形區(qū)域
CDC *pDC1 = m_picUserIcon.GetDC();//獲得pictrue控件的DC
rect.right = rect.left + 126;
rect.bottom = rect.top + 126;
image.Draw(pDC1->m_hDC, rect); //將圖片畫到Picture控件表示的矩形區(qū)域
ReleaseDC(pDC1);//釋放picture控件的DC
}(2)將CImage轉(zhuǎn)成HBITMAP,代碼如下:
CImage img; CBitmap bitmap; img.Load(strIcon); HBITMAP hbmp = (HBITMAP)img.operator HBITMAP();
在要HBITMAP的地方使用.
(3)和用CImage縮小圖像,代碼如下:
m_img.Load(strIcon);//CImage從路徑中加載圖片 m_iconImage.Create(32, 32, 32);//CImage相當(dāng)于創(chuàng)一幅空白圖片 m_img.StretchBlt(m_iconImage.GetDC(), CRect(0,0,32,32));//畫圖 m_iconImage.ReleaseDC();//釋放 pAppButton->SetImage(m_iconImage.operator HBITMAP());//畫到主按鈕上
(4)CImage取出DLL中的位圖資源并顯示,如下:
#include <atlimage.h>//在.h中聲明CImge類的變量可能需要
HINSTANCE temp = AfxGetResourceHandle();
AfxSetResourceHandle(GetModuleHandle(_T("Scale3DCDeviceManage")));//DLL名稱
m_img.LoadFromResource(AfxGetResourceHandle(), IDB_BITMAP7);
AfxSetResourceHandle(temp);
//將圖片顯示到窗口上
CPaintDC dc(this);
m_img.SetTransparentColor(RGB(255, 255, 255));//透明色
m_img.TransparentBlt(dc.m_hDC, CRect(5, 5, 40, 40));(5)圖像上有CStatic控件,需要局部刷新圖像控件
CRect rt; m_staTitle.GetWindowRect(&rt); ScreenToClient(&rt); InvalidateRect(rt);
(6)取出資源中的PNG圖片,并顯示到Pictrue控件上.
BOOL CInstallDlg::LoadImageFromResource(ATL::CImage *pImage, UINT nResID, LPCTSTR lpTyp)
{
if(pImage == NULL)return false;
pImage->Destroy();
// 查找資源
HRSRC hRsrc = ::FindResource(AfxGetResourceHandle(), MAKEINTRESOURCE(nResID), lpTyp);
if (hRsrc == NULL)return false;
// 加載資源
HGLOBAL hImgData = ::LoadResource(AfxGetResourceHandle(), hRsrc);
if (hImgData == NULL)
{
::FreeResource(hImgData);
return false;
}
// 鎖定內(nèi)存中的指定資源
LPVOID lpVoid = ::LockResource(hImgData);
LPSTREAM pStream = NULL;
DWORD dwSize = ::SizeofResource(AfxGetResourceHandle(), hRsrc);
HGLOBAL hNew = ::GlobalAlloc(GHND, dwSize);
LPBYTE lpByte = (LPBYTE)::GlobalLock(hNew);
::memcpy(lpByte, lpVoid, dwSize);
//解除內(nèi)存中的指定資源
::GlobalUnlock(hNew);
//從指定內(nèi)存創(chuàng)建流對(duì)象
HRESULT ht = ::CreateStreamOnHGlobal(hNew, TRUE, &pStream);
if (ht != S_OK)
{
GlobalFree(hNew);
}
else
{
// 加載圖片
pImage->Load(pStream);
GlobalFree(hNew);
}
// 釋放資源
::FreeResource(hImgData);
return true;
}
void CInstallDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息處理程序代碼和/或調(diào)用默認(rèn)值
static INT uID = IDB_PNG1;
LoadImageFromResource(&m_img, uID, _T("PNG"));
SendMessage(WM_PAINT, 0, 0);
SendMessage(WM_ERASEBKGND, 0, 0);
uID++;
if (uID >= IDB_PNG4)uID = IDB_PNG1;
CDialogEx::OnTimer(nIDEvent);
}顯示到圖片控件中,如下
void CInstallDlg::OnPaint()
{
CPaintDC dc(this);
CRect rect;
CDC *pDC1 = m_pic.GetDC();//獲得pictrue控件的DC
rect.top = 260;
rect.left = 0;
rect.right = 600;
rect.bottom = 260+ 328;
m_img.SetTransparentColor(RGB(255, 255, 255));
//m_img.Draw(pDC1->m_hDC, rect); //將圖片畫到Picture控件表示的矩形區(qū)域
m_img.TransparentBlt(pDC1->m_hDC, rect);
ReleaseDC(pDC1);//釋放picture控件的DC
}圖片控件刷新后,才能顯示,如下:
SendMessage(WM_PAINT, 0, 0); SendMessage(WM_ERASEBKGND, 0, 0);
網(wǎng)站名稱:使用CImage類在Pictrue控件上畫圖片
轉(zhuǎn)載來源:http://chinadenli.net/article8/pgeeip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、手機(jī)網(wǎng)站建設(shè)、用戶體驗(yàn)、App開發(fā)、服務(wù)器托管、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)