为什么小弟我没法改变内存DC及其画的曲线的颜色
为什么我没法改变内存DC及其画的曲线的颜色?在线等
我想实现通过创建内存DC然后改变起底色在上面画曲线同时对曲线颜色也可以改成我要的颜色,写的一绘图函数在CDialog::OnPaint调用。代码简化如下:
void CttDlg::DrawT()
{
if (m_MemoryDC.m_hDC == NULL)
{
GetClientRect(&m_MemoryRect);//CDialog区域
m_MemoryDC.CreateCompatibleDC(NULL);
//
if (m_MemoryBitmap.m_hObject == NULL)
{
m_MemoryBitmap.CreateCompatibleBitmap(&m_MemoryDC,m_MemoryRect.Width(),m_MemoryRect.Height());
}
m_MemoryDC.SelectObject(&m_MemoryBitmap);
CBrush brush(RGB(255,0,0));
m_MemoryDC.SelectObject(&brush);//选择颜色
m_MemoryDC.FillSolidRect(0,0,m_MemoryRect.Width(),m_MemoryRect.Height(),RGB(255,0,0));//填充底色红
}
if (GetDC() != NULL)
{
GetDC()-> BitBlt(m_MemoryRect.left,m_MemoryRect.top,m_MemoryRect.Width(),m_MemoryRect.Height(),
&m_MemoryDC,0,0,SRCCOPY);
}
CPen pen(PS_SOLID,0,RGB(0,255,0)) //绿色
用MemoryDC画曲线...
}
但运行后的结果是底色为黑,且线的颜色为白色。无论我怎么改RGB里的颜色都没实现我想要的效果。不知是为啥,我以前画波形也是如此做的都能实现,但这次不知哪里出错,请各位大虾指点指点。。。
------解决方案--------------------
CreateCompatibleBitmap参数不要使用内存DC,而应该使用窗口DC
我想实现通过创建内存DC然后改变起底色在上面画曲线同时对曲线颜色也可以改成我要的颜色,写的一绘图函数在CDialog::OnPaint调用。代码简化如下:
void CttDlg::DrawT()
{
if (m_MemoryDC.m_hDC == NULL)
{
GetClientRect(&m_MemoryRect);//CDialog区域
m_MemoryDC.CreateCompatibleDC(NULL);
//
if (m_MemoryBitmap.m_hObject == NULL)
{
m_MemoryBitmap.CreateCompatibleBitmap(&m_MemoryDC,m_MemoryRect.Width(),m_MemoryRect.Height());
}
m_MemoryDC.SelectObject(&m_MemoryBitmap);
CBrush brush(RGB(255,0,0));
m_MemoryDC.SelectObject(&brush);//选择颜色
m_MemoryDC.FillSolidRect(0,0,m_MemoryRect.Width(),m_MemoryRect.Height(),RGB(255,0,0));//填充底色红
}
if (GetDC() != NULL)
{
GetDC()-> BitBlt(m_MemoryRect.left,m_MemoryRect.top,m_MemoryRect.Width(),m_MemoryRect.Height(),
&m_MemoryDC,0,0,SRCCOPY);
}
CPen pen(PS_SOLID,0,RGB(0,255,0)) //绿色
用MemoryDC画曲线...
}
但运行后的结果是底色为黑,且线的颜色为白色。无论我怎么改RGB里的颜色都没实现我想要的效果。不知是为啥,我以前画波形也是如此做的都能实现,但这次不知哪里出错,请各位大虾指点指点。。。
------解决方案--------------------
CreateCompatibleBitmap参数不要使用内存DC,而应该使用窗口DC