一个有趣的现象,求高人指点

newton2069 2007-08-02 10:28:08
我在OnDraw()里写了以下代码:
pDC->Rectangle(m_nViewX1,m_nViewY1,m_nViewX2,m_nViewY2);
pDC->Ellipse(m_nViewX1,m_nViewY1,m_nViewX2,m_nViewY2);

pDC->MoveTo(m_nViewX1,m_nViewY1);
pDC->LineTo(m_nViewX2,m_nViewY2);
m_nViewX1,m_nViewY1,m_nViewX2,m_nViewY2,这四个变量是从对话框中的编辑控件传过来的参数.
以这个顺序就可以同时画三个图形,但换一下顺序就不行了,
例如,将画矩形的语句放最后,结果只能画出矩形,不知为什么,请教各位兄弟!!
...全文
209 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hikefreeman 2007-08-04
  • 打赏
  • 举报
回复
默认是用白色填充的,大图形将小图形覆盖了,矩形最大,所以把矩形的代码放到最后就会覆盖前面的线段和椭圆
windboyzsj 2007-08-03
  • 打赏
  • 举报
回复
矩形你要理解为一个矩形块,他默认是由白色填充的方块
所以之前画的和之后画的位置重叠的画则会覆盖掉之前的
你可以用楼上的方法,让DC选用透明的画刷
wfenj 2007-08-03
  • 打赏
  • 举报
回复
晕,有什么好奇怪的,覆盖掉了
xdljf 2007-08-03
  • 打赏
  • 举报
回复
对啊,面会把线覆盖掉
xiaoQ008 2007-08-03
  • 打赏
  • 举报
回复
楼主,你如果反过来画就相当于
画线,然后画个椭圆,这个椭圆会把线覆盖掉,因为它默认带白色画刷!
再话矩形的画就把椭圆覆盖了,同样也是因为它默认带白色画刷!
所以,在画之前应该pDC->SelectStockObject(NULL_BRUSH), 选个透明画刷,这样就不会覆盖了
很简单的一个道理
你在地上放了跟白线,然后在白线上面放了块白色的椭圆型布,接着在白色的椭圆型布上面放了块矩形布!当然,你只能看到矩形的那块!
deping_chen 2007-08-03
  • 打赏
  • 举报
回复
呵呵,我当什么有趣的东西呢。
newton2069 2007-08-03
  • 打赏
  • 举报
回复
谢谢大家的指点!!
jasonshark 2007-08-02
  • 打赏
  • 举报
回复
Rectangle, Ellipse会用当前画刷刷掉内部的东东

画之前pDC->SelectStockObject(NULL_BRUSH), 画之后还原

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧