自定义形状控件 c++ 的渐变填充

Gradientfill for custom shape control c++

本文关键字:渐变 填充 c++ 控件 自定义      更新时间:2023-10-16

我想为圆角矩形的一个边缘绘制渐变填充。我尝试使用

GradientFill

API 组合

BeginPath()
EndPath()
SelectClipPath()

API,但它不起作用。

由于 RoundRect 是 windows API,我们是否有一些 windows API 来对圆角矩形执行渐变填充。

更具体地说,我们可以将渐变填充限制在任何边缘吗?

您可以使用 GDI 执行此操作。 函数的顺序为:

BeginPath
RoundRect
EndPath
WidenPath
SelectClipPath
GradientFill

这将使用渐变绘制圆角矩形的整个边框。 关键是WidenPath. 这会在设备上下文中创建一条新路径,相当于使用当前笔划旧路径时将填充的区域。

如果您只想在单个边缘上显示渐变

,请在单个边缘上执行渐变填充。 您可以轻松计算边缘的位置。

更新

如果您还想用渐变填充填充内部,请先使用相同的函数序列而不使用WidenPath,然后绘制轮廓。 将两者与类似的东西结合起来 BeginPath, RoundRect, EndPath, SaveDC, SelectClipPath, GradientFill, RestoreDC, WidenPath, SelectClipPath, GradientFill .