Gradientfill用于自定义形状控制c ++

时间:2012-05-29 01:28:48

标签: c++ winapi gdi

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

GradientFill

API结合

BeginPath()
EndPath()
SelectClipPath()

API,但它不起作用。

由于RoundRect是Windows API,我们是否有一些Windows API在圆角矩形上执行渐变填充。

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

1 个答案:

答案 0 :(得分:1)

您可以使用GDI执行此操作。函数序列是:

BeginPath
RoundRect
EndPath
WidenPath
SelectClipPath
GradientFill

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

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

<强>更新

如果您还想使用渐变填充填充内部,请首先使用相同的函数序列而不使用WidenPath,然后绘制轮廓。将两者合并为BeginPath, RoundRect, EndPath, SaveDC, SelectClipPath, GradientFill, RestoreDC, WidenPath, SelectClipPath, GradientFill