如何强制仅重绘背景,以便控件不会再次重绘?

时间:2019-06-20 22:29:44

标签: winapi gdi

此问题是由对另一个问题Common Controls on a Transparent Window?的答复所产生的。

显然,有一种方法可以只绘制背景而无需再次绘制控件本身,这将解决在透明背景上具有通用控件按钮的问题。

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

1 个答案:

答案 0 :(得分:1)

关于如何重绘可见边框。

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

FrameRgn函数通过使用指定的画笔在指定区域周围绘制边框。

简单的代码演示:

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

您需要的链接:Redraw Border