jpf*_*ius 4 windows delphi gdi
使用Delphi/GDI从剪切区域中排除圆角矩形的正确方法是什么?
有ExcludeClipRect排除的矩形区域,并有CreateRoundRectRgn连同SelectClipRgn到剪辑区域设置为圆角矩形.
但是如何从裁剪区域中排除圆形矩形(类似于ExcludeClipRoundRect或ExcludeClipRgn)?我使用CombineRgn进行了实验,但没有让它正常工作.
感谢@TLama的评论我能够像这样解决它:
Region := CreateRectRgn (0, 0, ClientWidth, ClientHeight);
ExcludedRegion := CreateRoundRectRgn (1, 1, ClientWidth - 1, ClientHeight - 1, 3, 3);
CombineRgn (Region, Region, ExcludedRegion, RGN_XOR);
SelectClipRgn (Canvas.Handle, Region);
Run Code Online (Sandbox Code Playgroud)
之前的问题是该区域作为第一个参数传递到CombineRgn尚未创建.链接教程中的一句话提供了线索:
还有一点需要指出的是,CombineRgn中的目标区域可以是源区域之一.
连同MSDN的这些信息:
hrgnDest [in]:通过组合其他两个区域定义维度的新区域的句柄.(在调用CombineRgn之前,该区域必须存在.)