GDI的裁剪

1.什么是GDI的裁切功能?
我们在绘图前可以对DC进行裁剪,然后DC的有效区域将变成剪裁后的区域,然后再进行绘图操作.那么裁剪掉的部分怎么样了,回答是:被抛弃了.就是说被抛弃的地方画什么都不显示了.2.裁剪后再绘图有什么不同效果?
被裁剪掉的部分,绘图操作将不再起作用.比如:我们要用BitBlt把一幅和对话框客户区大小相同的位图贴到对话框的客户区,我们获得了对话框客户区的DC,在绘图之前我们调用相关的API将客户区中间的一块矩形区域裁剪掉了,之后我们再贴位图上去,那么效果就是:位图充满对话框的客户区但是中间的那一小块剪裁掉的区域仍然保持对话框原色.3.何时剪裁?
回答是:得到DC句柄之后,画图之前.画完了再剪裁是无效的4.如何裁剪?
回答是:调用相关的API.
1.SelectObject(hDC,hRgn);
这个函数是设置当前的绘图有效区域.设定DC中只有hRgn指定的区域是有效绘图区域,其它部分作抛弃处理2.ExcludeClipRect(hDC,x1,y1,x2,y2);
这个函数是将x1,y1,x2,y2指定的矩形从当前有效绘图区域中排除.也就是x1,y1,x2,y2的矩形部分被抛弃了3.ExtSelectClipRgn(hDC,hRgn,合并模式)
这个函数将当前有效绘图区域和hRgn合并.当前有效绘图区域是合并后的区域.比如:ExtSelectClipRgn(hDC,hRgn,RGN_DIFF)的作用就是从当前有效绘图区域中抛弃hRgn指定的那部分.而ExtSelectClipRgn(hDC,hRgn,RGN_AND)的作用是当前有效绘图区域和hRgn重叠的区域作为当前有效绘图区域5.一次裁剪操作的作用时间?
DeleteDC,ReleaseDC等等调用之后设置的剪裁区域将失效.也就是说下次获得DC之后还要调用剪裁API才能设置新的剪裁区域6.如果我们没有调用相关的剪裁API那么当前默认的剪裁区域是什么呢?
回答是:DC的范围.窗口DC的当前有效绘图区域就是整个窗口,客户区DC那就是整个客户区  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值