Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在使用 RoundRect windows API 绘制圆角矩形。
RoundRect(hdc,0,0,100,100,4,4);
在这里,我正在绘制圆角宽度和高度 = 4 px 的矩形。
之后我想填充圆角矩形。为此,我正在使用创建矩形区域
CreateRoundRectRgn
然后调用 FillRgn API。
问题是填充后我也可以看到圆角外的填充颜色。由于我正在创建圆形区域,因此填充应该只在该区域内。
任何想法为什么它会在圆角矩形之外?
RoundRect已经使用当前画笔填充了矩形。只需使用SelectObject来选择你想要的画笔。
RoundRect
SelectObject
这使得以下观察有些多余。 RoundRect并CreateRoundRectRgn以不同的方式解释坐标。 RoundRect的坐标是包含CreateRoundRectRgn的,但在右下角是排他的(因此在后一种情况下,您必须在右下角坐标中添加一个)。
而且由于 Windows 不提供获取与圆角矩形内部相对应的区域的功能,因此如果您自己填充它,您将永远无法获得像素完美的精度(圆角矩形的内部与稍微较小的圆角矩形)。