如下代码所示在内存里创建一个图片m_Bmp1,放到m_rcFrame_Now区域里但结果m_rcFrame_Now变成了一个黑块
不知道为什么,应该不难,谁给看看
CDC dcmem1;
CBitmap m_Bmp1;
dcmem1.CreateCompatibleDC(dc);
m_Bmp1.CreateCompatibleBitmap(dc,
m_rcFrame_Now.right-m_rcFrame_Now.left,
m_rcFrame_Now.bottom-m_rcFrame_Now.top);
dcmem1.SelectObject(m_Bmp1);
pOldFont=dcmem1.SelectObject(&pFont.fXYZ);
dcmem1.SetTextColor(RGB(0,0,0));
dcmem1.SetBkMode(TRANSPARENT);
dcmem1.TextOut(m_rcFrame_Now.left, m_rcFrame_Now.top, frameinfor);
dcmem1.SelectObject(pOldFont);dc->BitBlt(m_rcFrame_Now.left,
m_rcFrame_Now.top-50,
m_rcFrame_Now.right-m_rcFrame_Now.left,
m_rcFrame_Now.bottom-m_rcFrame_Now.top,
&dcmem1,0,0,SRCCOPY);
m_Bmp1.DeleteObject();
dcmem1.DeleteDC();
不知道为什么,应该不难,谁给看看
CDC dcmem1;
CBitmap m_Bmp1;
dcmem1.CreateCompatibleDC(dc);
m_Bmp1.CreateCompatibleBitmap(dc,
m_rcFrame_Now.right-m_rcFrame_Now.left,
m_rcFrame_Now.bottom-m_rcFrame_Now.top);
dcmem1.SelectObject(m_Bmp1);
pOldFont=dcmem1.SelectObject(&pFont.fXYZ);
dcmem1.SetTextColor(RGB(0,0,0));
dcmem1.SetBkMode(TRANSPARENT);
dcmem1.TextOut(m_rcFrame_Now.left, m_rcFrame_Now.top, frameinfor);
dcmem1.SelectObject(pOldFont);dc->BitBlt(m_rcFrame_Now.left,
m_rcFrame_Now.top-50,
m_rcFrame_Now.right-m_rcFrame_Now.left,
m_rcFrame_Now.bottom-m_rcFrame_Now.top,
&dcmem1,0,0,SRCCOPY);
m_Bmp1.DeleteObject();
dcmem1.DeleteDC();
...
dcmem1.SelectObject(pOldBmp);
m_Bmp1.DeleteObject();
dcmem1.DeleteDC();
dcmem1.FillSolidRect(&m_rcFrame_Now,RGB(200,200,0));//填充上颜色
这个貌似有问题,会不会写出界啊?left & top 是多少?bmp确保有那么大么?
这个是一个主要错误,可为什么一定要填充上颜色背景色?
直接用dcmem1.SetBkMode(TRANSPARENT);去用原来的背景(是一张图片)为什么不行?