MFC画图程序调用CColorDialog,颜色还是改不了。。
我是在MouseMove函数里画图的然后在CView类添加了一个公有的COLORREF类型的变量m_Clr来存储画图时画笔的颜色,然后我通过CColorDialog调用调色板,然后添加如下代码CColorDialog dlg;
dlg.m_cc.Flags|=CC_RGBINIT;
dlg.m_cc.rgbResult=m_Clr;
if(IDOK==dlg.DoModal())
{
m_Clr=dlg.m_cc.rgbResult;
} 运行后颜色还是不变化,然后我重新写了这个代码换成CColorDialog dlg;
if(dlg.DoModal()==IDOK)
{
m_Clr=dlg.GetColor();
} 结果还是没用不知道我哪里错了,大神们帮帮忙啊。。
下面附上画图的代码
void CTest2View::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CPen *pOldPen,NewPen;
if((m_ptEnd!=point)&&(nFlags))
{
CClientDC dc(this);
dc.SetBkMode(TRANSPARENT);
NewPen.CreatePen(PS_SOLID,m_Width,m_Clr);
pOldPen=dc.SelectObject(&NewPen);
switch(m_nDrawType)
{
case 0:
if(m_bDragging)
{
dc.MoveTo(m_ptOrigin);
dc.LineTo(m_ptEnd);
m_ptOrigin=point;
}
case 1:
dc.SetROP2(R2_NOT);
dc.MoveTo(m_ptOrigin);
dc.LineTo(m_ptEnd);
m_ptEnd=point;
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);break;
case 2:
dc.SetROP2(R2_XORPEN);
dc.MoveTo(m_ptOrigin);
dc.Ellipse(CRect(m_ptOrigin,m_ptEnd));
m_ptEnd=point;
dc.MoveTo(m_ptOrigin);
dc.Ellipse(CRect(m_ptOrigin,point));
break;
case 3:
dc.SetROP2(R2_NOT);
dc.MoveTo(m_ptOrigin);
dc.LineTo(m_ptOrigin.x,m_ptEnd.y);
dc.MoveTo(m_ptOrigin);
dc.LineTo(m_ptEnd.x,m_ptOrigin.y);
dc.MoveTo(m_ptOrigin.x,m_ptEnd.y);
dc.LineTo(m_ptEnd);
dc.MoveTo(m_ptEnd.x,m_ptOrigin.y);
dc.LineTo(m_ptEnd);
m_ptEnd=point;
dc.MoveTo(m_ptOrigin);
dc.LineTo(m_ptOrigin.x,point.y);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point.x,m_ptOrigin.y);
dc.MoveTo(m_ptOrigin.x,point.y);
dc.LineTo(point);
dc.MoveTo(point.x,m_ptOrigin.y);
dc.LineTo(point);break;
default:
break;
}
dc.SelectObject(pOldPen);
NewPen.DeleteObject();
ReleaseDC(&dc);
}
CView::OnMouseMove(nFlags, point);
} 求大神请教啊,感激不尽。。。。。。。