求高手指点!mfc 画图中有关画刷的问题(实心矩形)

初学菜鸟啊,我在弄一个画图程序,想实现鼠标画矩形、椭圆、实心矩形、实心椭圆。如果在case3和case4都加上颜色画刷的话就重复了,还要实现透明画刷,我就完全不懂了。是不... 初学菜鸟啊,我在弄一个画图程序,想实现鼠标画矩形、椭圆、实心矩形、实心椭圆。
如果在case3和case4都加上颜色画刷的话就重复了,还要实现透明画刷,我就完全不懂了。是不是可以用 oldBrush/NewBrush什么的。不知道我表达清楚没。
画矩形和椭圆是要用透明画刷:
CBrush *pBrush=CBrush::FromHandle((HBURSH)GetStockObject(NULL_BRUSH));
dc.SelectObject(pBrush);
实心时:
CBrush brush;
brush.CreateSolidBrush(m_clr);
dc.SelectObject(&brush);

代码:
void CMy5192016View::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_nOrginPoint= point;
CView::OnLButtonDown(nFlags, point);
}

void CMy5192016View::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default

CClientDC dc(this);
switch(m_nDrawType){
case 1:
dc.Rectangle(CRect(m_nOrginPoint,point));
break;
case 2:
dc.Ellipse(CRect(m_nOrginPoint,point));
break;
case 3:
CBrush brush;
brush.CreateSolidBrush(m_clr);
dc.SelectObject(&brush);

dc.Ellipse(CRect(m_nOrginPoint,point));

break;
case 4:
CBrush brush;
brush.CreateSolidBrush(m_clr);
dc.SelectObject(&brush);
dc.Rectangle(CRect(m_nOrginPoint,point));
break;}
CView::OnLButtonUp(nFlags, point);
}

麻烦帮帮我~感谢啊!
我弄好一点了,不用管透明画刷了,现在的问题就是那两个实心图形
展开
 我来答
放大人生
2012-05-20 · TA获得超过192个赞
知道小有建树答主
回答量:387
采纳率:0%
帮助的人:213万
展开全部
这还用问吗?肯定重复了啊 你case 3: case 4: 里面画图的时候传入的
CRect(m_nOrginPoint,point) 是相同的,参数是相同的,你要注意里面的值如果相同肯定重复了啊
追问
我不会改啊   CRect(m_nOrginPoint,point) 的参数改了的话,有色画刷的代码要放到哪里啊?
追答
我的意思是你传入的矩形坐标重复了,所以画出来的东西肯定就覆盖在一起了啊,
CRect(m_nOrginPoint,point) 你修改一下 我举个例子,你在case 3:的
dc.Rectangle( CRect(CRect(0,0,100,100)) );
case 4: 里面写成dc.Rectangle( CRect(CRect(200,200,300,300)) ); 这样就不会重复了,明白吗,坐标 不要一样!!!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式