C++ 带有RoundRect的圆角边不平滑

C++ 带有RoundRect的圆角边不平滑,c++,winapi,gdi,C++,Winapi,Gdi,我正在使用RoundRect windows API绘制圆角矩形 RoundRect(hdc,0,0,100,100,4,4); 这里我画的是圆角宽度和高度=4px的矩形 之后,我想填充圆角矩形。为此,我使用 CreateRoundRectRgn 然后打电话 FillRGNAPI 问题是,填充后,我可以看到填充颜色外圆角也。因为我创建的是圆形区域,所以填充应该只在该区域内 你知道为什么它会在圆角矩形之外吗?RoundRect已经用当前笔刷填充了矩形。只需使用SelectObject选择所需画

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

RoundRect(hdc,0,0,100,100,4,4);
这里我画的是圆角宽度和高度=4px的矩形

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

CreateRoundRectRgn
然后打电话 FillRGNAPI

问题是,填充后,我可以看到填充颜色外圆角也。因为我创建的是圆形区域,所以填充应该只在该区域内


你知道为什么它会在圆角矩形之外吗?

RoundRect
已经用当前笔刷填充了矩形。只需使用
SelectObject
选择所需画笔即可

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


由于Windows不提供获取与圆角矩形内部相对应的区域的功能,如果您自己填充它,将永远无法获得像素的完美精度(圆角矩形的内部与稍小的圆角矩形不同).

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

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

由于Windows不提供获取与圆角矩形内部相对应的区域的功能,如果您自己填充它,您将永远无法获得像素的完美精度(圆角矩形的内部与稍小的圆角矩形不同)