加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 从剪切区域中排除圆角矩形?

发布时间:2020-12-14 02:05:23 所属栏目:Windows 来源:网络整理
导读:使用Delphi / GDI从剪切区域中排除圆角矩形的正确方法是什么? 存在ExcludeClipRect以排除矩形区域,并且CreateRoundRectRgn与SelectClipRgn一起将剪切区域设置为圆形矩形. 但是如何从剪切区域中排除圆形矩形(类似于ExcludeClipRoundRect或ExcludeClipRgn)?
使用Delphi / GDI从剪切区域中排除圆角矩形的正确方法是什么?

存在ExcludeClipRect以排除矩形区域,并且CreateRoundRectRgn与SelectClipRgn一起将剪切区域设置为圆形矩形.

但是如何从剪切区域中排除圆形矩形(类似于ExcludeClipRoundRect或ExcludeClipRgn)?我用CombineRgn进行了实验,但没有得到它的工作.

解决方法

感谢@TLama的评论我能够像这样解决它:

Region := CreateRectRgn (0,ClientWidth,ClientHeight);
ExcludedRegion := CreateRoundRectRgn (1,1,ClientWidth - 1,ClientHeight - 1,3,3);
CombineRgn (Region,Region,ExcludedRegion,RGN_XOR);
SelectClipRgn (Canvas.Handle,Region);

之前的问题是尚未创建作为CombineRgn的第一个参数传递的区域.链接教程中的一句话提供了线索:

One more thing to point out is that the destination region in
CombineRgn can be one of the source regions.

连同MSDN的这些信息:

hrgnDest [in]: A handle to a new region with dimensions defined by combining two other regions. (This region must exist before CombineRgn is called.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读