CStatic *pPic = (CStatic*)GetDlgItem(IDC_PICTURE); CBitmap bitmap; bitmap.LoadBitmapW(IDB_BITMAP2); pPic->SetBitmap((HBITMAP)bitmap.GetSafeHandle());
//在Picture的Type調為Bitmap
像素修改:
CStatic *pPic = (CStatic*)GetDlgItem(IDC_PICTURE); CBitmap bitmap; bitmap.LoadBitmapW(IDB_BITMAP2); BITMAP mBitmap; bitmap.GetBitmap(&mBitmap); HBITMAP hBitmap = (HBITMAP)bitmap.GetSafeHandle(); CImage image; image.Attach(hBitmap); int mWidth = image.GetWidth(); int mHeight = image.GetHeight(); _cprintf("width = %d\nheight = %d\n", image.GetWidth(), image.GetHeight()); for (int i = 0; i < mWidth; i++) { for (int j = 0; j < mHeight; j++) { if (i>=10&&i<=30) image.SetPixel(i, j, RGB(20,50,90)); } } CDialogEx::OnPaint(); CClientDC dc(this);//選定當前畫圖環境 DrawLine(&dc); pPic->SetBitmap(hBitmap);
使用CImage繪制PNG圖片
CDC *pDC = GetDC(); CImage Image; Image.Load(_T("C:/C_Project/MFCApplication1/Debug/flow.png")); if (Image.IsNull()) { MessageBox(_T("沒加載成功")); } if (Image.GetBPP() == 32) { for (int i = 0; i < Image.GetWidth(); i++) { for (int j = 0; j < Image.GetHeight(); j++) { byte *pByte = (byte*)Image.GetPixelAddress(i, j); pByte[0] = pByte[0] * pByte[3] / 255; pByte[1] = pByte[1] * pByte[3] / 255; pByte[2] = pByte[2] * pByte[3] / 255; } } } Image.Draw(pDC->m_hDC, 0, 0);