(1)從文件中加載圖片
成都創新互聯公司主營梅河口網站建設的網絡公司,主營網站建設方案,成都App制作,梅河口h5小程序定制開發搭建,梅河口網站營銷推廣歡迎梅河口等地區企業咨詢void CScale3DCUserManageView::OnDraw(CDC* pDC) { // TODO: 在此添加專用代碼和/或調用基類 CImage image; //創建圖片類 USES_CONVERSION; INT re = _access(W2A(m_strUserPicPath), 0);//判文件是否存在 if (re == -1)return; image.Load(m_strUserPicPath); //根據圖片路徑加載圖片 CRect rect;//定義矩形類 int cx = image.GetWidth();//獲取圖片寬度 int cy = image.GetHeight();//獲取圖片高度 m_picUserIcon.GetClientRect(&rect);//獲得pictrue控件所在的矩形區域 CDC *pDC1 = m_picUserIcon.GetDC();//獲得pictrue控件的DC rect.right = rect.left + 126; rect.bottom = rect.top + 126; image.Draw(pDC1->m_hDC, rect); //將圖片畫到Picture控件表示的矩形區域 ReleaseDC(pDC1);//釋放picture控件的DC }
(2)將CImage轉成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相當于創一幅空白圖片 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; } // 鎖定內存中的指定資源 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); //解除內存中的指定資源 ::GlobalUnlock(hNew); //從指定內存創建流對象 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: 在此添加消息處理程序代碼和/或調用默認值 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控件表示的矩形區域 m_img.TransparentBlt(pDC1->m_hDC, rect); ReleaseDC(pDC1);//釋放picture控件的DC }
圖片控件刷新后,才能顯示,如下:
SendMessage(WM_PAINT, 0, 0); SendMessage(WM_ERASEBKGND, 0, 0);
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網頁名稱:使用CImage類在Pictrue控件上畫圖片-創新互聯
本文地址:http://vcdvsql.cn/article8/hojop.html
成都網站建設公司_創新互聯,為您提供移動網站建設、做網站、搜索引擎優化、網站排名、網站維護、微信小程序
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯