c++ - RoundRect 的圆角边缘不平滑

标签 c++ winapi gdi

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

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

我在这里绘制圆角宽度和高度 = 4 px 的矩形。

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

创建矩形区域
CreateRoundRectRgn

然后调用 FillRgn API。

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

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

最佳答案

RoundRect 已经使用当前画笔填充了矩形。只需使用 SelectObject 选择您想要的画笔。

这使得以下观察结果有些多余。 RoundRectCreateRoundRectRgn 对坐标的解释不同。 RoundRect 的坐标是包容性的,但 CreateRoundRectRgn 的坐标在右下角是独占的(因此在后一种情况下,您必须向右下角坐标添加一个)。

并且由于 Windows 不提供获取对应于圆角矩形内部的区域的函数,如果您自己填充它,您将永远无法获得像素完美的精度(圆角矩形的内部是不一样的)作为一个稍小的圆角矩形)。

关于c++ - RoundRect 的圆角边缘不平滑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10783043/

相关文章:

c++ - 在 C++ 中,我不知道为什么我的函数不返回结果

c++ - 在 C++ 中定义带条件的宏

windows - 监控您自己进程中的内存使用情况

winapi - 如何在高 DPI 显示器上获得正常大小的光标?

windows - 如何使用 GDI 函数在 OpenGL 使用的 DC 上绘图?

c++ - 所以我决定不再使用命名空间,但现在我应该什么时候添加 std::或 cv::?

c++ - 自定义 QDateEdit 样式

c++ - WINAPI GetMessage HWND

c++ - MFC中如何在当前光标所在位置画一个矩形

winapi - GetRandomRgn 不排除工具提示