RoundRect的圆形边缘不平滑

时间:2012-05-28 10:22:06

标签: c++ winapi gdi

rounded rectaangle 我正在使用RoundRect windows API绘制圆角矩形。

RoundRect(hdc,0,0,100,100,4,4);

这里我画的是圆角宽度和高度= 4像素的矩形。

之后我想填充圆角矩形。为此我使用

创建矩形区域
CreateRoundRectRgn

然后打电话 FillRgn API。

问题是填充后我也可以看到圆角外的填充颜色。由于我正在创建圆形区域,因此填充应仅在该区域内。

为什么它会在圆角矩形之外出现?

1 个答案:

答案 0 :(得分:3)

RoundRect已使用当前画笔填充矩形。只需使用SelectObject选择所需的画笔。

这使得以下观察有些多余。 RoundRectCreateRoundRectRgn以不同方式解释坐标。 RoundRect的坐标是包含的,但是CreateRoundRectRgn在右下方是独占的(因此在后一种情况下你必须在右下角坐标中添加一个)。

由于Windows不提供获取与圆角矩形内部对应的区域的功能,因此如果自己填充,则永远不会获得像素完美的精度(圆角矩形的内部不一样)作为一个略小的圆角矩形)。