pDC 与 GetDC() 区别

pDC和GetDC在Windows编程中用于绘制时有显著差异。pDC关联于视图的初始客户区,当滚动条移动时,依赖pDC的元素如工具栏会随之移动。而GetDC返回当前可见窗口的设备上下文,其坐标以窗口左上角为基准,滚动条移动不影响绘图。两者坐标系不同,导致绘图效果有别。在CScrollView的OnDraw中,pDC已经裁剪过,与GetDC()表现不一致。建议通过实际测试对比理解两者差异。
摘要由CSDN通过智能技术生成

  在OnDraw中分别调用pDC和GetDC() 得到的结果可能不相同

 

   pDC 所指的是视图初始的客户区DC  

   比如 视图是基于CFormView类的,其上设置了工具栏资源

   则这些工具栏就是依赖pDC产生的,  这样,当滚动条左右移动时,工具栏资源也随之左右移动。 

   这是因为:滚动条移动时,当前窗口可见区的坐标发生变化,而工具栏资源是以PDC坐标为准的,因此,工具栏各个资源的坐标位置不变,而窗口坐标发生变化,这样就使得工具栏也有移动的效果

 

    如果使用pDC来画图, 当滚动条右移时,可以发现,图片局限在原有的PDC坐标区域中,无法移动到新视图的右端

 

   GetDC()  指的是: 获得当前可见窗口的DC,并将其坐标作为参照坐标,也就是可见窗口的左上角为DC的(0,0)点,这样,当用GetDC画图时,便会发现,无论滚动条如何移动,图片都不会发生变化。

   自然,这是因为,无论滚动条如何移动,当前可见窗口的坐标都是相同的,画图时都是参照可见窗口的左上角(0,0)点进行的,因此每次画的图都一样

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清水迎朝阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值