双缓冲画图,背景为黑色有关问题
双缓冲画图,背景为黑色问题!
如下是内存画图类的主要代码:
if (!m_MemoryDC.CreateCompatibleDC(dc))
return;
m_DCRect.SetRect(rect->left, rect->top, rect->right, rect->bottom);
if (!m_MemoryBmp.CreateCompatibleBitmap(dc, m_DCRect.Width(), m_DCRect.Height()))
return;
m_MemoryDC.SelectObject(m_MemoryBmp);
pDC->BitBlt(
m_DCRect.left,
m_DCRect.top,
m_DCRect.Width(),
m_DCRect.Height(),
&m_MemoryDC,
0,0,
SRCCOPY);
我获取内存DC画图,背景是黑色的...
如何在原有DC的图像不变, 在其上画图的效果呢??
我的理解是创建的内存DC m_MemoryDC要和dc有一样的效果,
这样获取m_MemoryDC画图就不会有黑色背景了!
不过不知道怎么做
哪位兄台劳驾写出事例代码给我参考下
------解决方案--------------------
if (!m_MemoryBmp.CreateCompatibleBitmap(pDC, m_DCRect.Width(), m_DCRect.Height()))
return;
这句是否改了?
BOOL CreateCompatibleBitmap( CDC* pDC, int nWidth, int nHeight );
第一个参数pDC 解释 Specifies the device context. //指定设备上下文,而不是内存dc
具体可以查MSDN
内存和设备要搞清楚,以及使用双缓冲的思路
不然图像不会正常显示
------解决方案--------------------
------解决方案--------------------
CreateCompatibleBitmap其实可以理解为在内存中按照屏幕色深以及你指定的大小分配了一片内存,这片内存在没有其他操作的情况下所有数据应该为0,那反应到图像上就是一篇黑色。
------解决方案--------------------
黑的也可以的...
你查一下TransparentBlt函数的用法...
另,楼主的代码似乎好多参数类型错误...莫非是我out了?
如下是内存画图类的主要代码:
if (!m_MemoryDC.CreateCompatibleDC(dc))
return;
m_DCRect.SetRect(rect->left, rect->top, rect->right, rect->bottom);
if (!m_MemoryBmp.CreateCompatibleBitmap(dc, m_DCRect.Width(), m_DCRect.Height()))
return;
m_MemoryDC.SelectObject(m_MemoryBmp);
pDC->BitBlt(
m_DCRect.left,
m_DCRect.top,
m_DCRect.Width(),
m_DCRect.Height(),
&m_MemoryDC,
0,0,
SRCCOPY);
我获取内存DC画图,背景是黑色的...
如何在原有DC的图像不变, 在其上画图的效果呢??
我的理解是创建的内存DC m_MemoryDC要和dc有一样的效果,
这样获取m_MemoryDC画图就不会有黑色背景了!
不过不知道怎么做
哪位兄台劳驾写出事例代码给我参考下
------解决方案--------------------
if (!m_MemoryBmp.CreateCompatibleBitmap(pDC, m_DCRect.Width(), m_DCRect.Height()))
return;
这句是否改了?
BOOL CreateCompatibleBitmap( CDC* pDC, int nWidth, int nHeight );
第一个参数pDC 解释 Specifies the device context. //指定设备上下文,而不是内存dc
具体可以查MSDN
内存和设备要搞清楚,以及使用双缓冲的思路
不然图像不会正常显示
------解决方案--------------------
------解决方案--------------------
CreateCompatibleBitmap其实可以理解为在内存中按照屏幕色深以及你指定的大小分配了一片内存,这片内存在没有其他操作的情况下所有数据应该为0,那反应到图像上就是一篇黑色。
------解决方案--------------------
黑的也可以的...
你查一下TransparentBlt函数的用法...
另,楼主的代码似乎好多参数类型错误...莫非是我out了?