0

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

GradientFill

API 结合

BeginPath()
EndPath()
SelectClipPath()

API,但它不起作用。

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

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

4

1 回答 1

1

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

BeginPath
RoundRect
EndPath
WidenPath
SelectClipPath
GradientFill

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

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

更新

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

于 2012-05-29T09:32:25.690 回答