Winapi 如何强制只重新绘制背景,使控件不再重新绘制背景?

Winapi 如何强制只重新绘制背景,使控件不再重新绘制背景?,winapi,gdi,Winapi,Gdi,此问题由对另一个问题的响应生成: 显然,有一种方法可以只绘制背景,而不重新绘制控件本身。这将解决在透明背景上具有公共控件按钮的问题 因此,我的问题是,在公共控件绘制自身后,如何仅绘制公共控件周围的背景?关于如何重新绘制可见边框 使用RoundRect绘制的圆角矩形作为代表 该函数使用指定的画笔在指定区域周围绘制边框 简单代码演示: HRGN hRegion = ::CreateRoundRectRgn (0, 0, ClientWidth, ClientHeight,12,12); Canvas

此问题由对另一个问题的响应生成:

显然,有一种方法可以只绘制背景,而不重新绘制控件本身。这将解决在透明背景上具有公共控件按钮的问题


因此,我的问题是,在公共控件绘制自身后,如何仅绘制公共控件周围的背景?

关于如何重新绘制可见边框

使用RoundRect绘制的圆角矩形作为代表

该函数使用指定的画笔在指定区域周围绘制边框

简单代码演示:

HRGN hRegion = ::CreateRoundRectRgn (0, 0, ClientWidth, ClientHeight,12,12);
Canvas->Brush->Style = bsSolid;
Canvas->Brush->Color = RGB(96, 96, 96);
::FrameRgn(Canvas->Handle, hRegion, Canvas->Brush->Handle, 2, 2);
::DeleteObject(hRegion); // Don't leak a GDI object

您需要的链接:

我在您链接的帖子中没有看到任何与您在此处所述内容相关的评论或答案。您的意思是,例如,重新绘制RoundRect按钮,然后只需要重新绘制按钮周围多余的白色边框。是的。有人是如何得到链接的描述的?我不知道我的回答是否对你有帮助。如果有帮助的话,请标出我的答案。这对其他社区成员阅读这篇文章是有益的。它能填充所有区域吗,比如说它是圆的,它能填充整个正方形吗?对于透明背景,可以有反向无效路径吗?