我想为圆角矩形的一个边缘绘制渐变填充。我尝试使用
GradientFill
API 结合
BeginPath()
EndPath()
SelectClipPath()
API,但它不起作用。
由于 RoundRect 是 windows API,我们是否有一些 windows API 来对圆角矩形执行渐变填充。
更具体地说,我们可以将渐变填充限制在任何边缘吗?
您可以使用 GDI 执行此操作。函数顺序为:
BeginPath
RoundRect
EndPath
WidenPath
SelectClipPath
GradientFill
这将使用渐变绘制圆角矩形的整个边框。关键是WidenPath
。这将在设备上下文中创建一个新路径,该路径等效于使用当前笔描边旧路径时将填充的区域。
如果您只想在单个边缘上进行渐变,请在单个边缘上执行 GradientFill。您可以轻松计算边缘的位置。
更新
如果你还想用渐变填充来填充内部,首先使用相同的函数序列,不带WidenPath
,然后绘制轮廓。将两者与类似的东西结合起来BeginPath, RoundRect, EndPath, SaveDC, SelectClipPath, GradientFill, RestoreDC, WidenPath, SelectClipPath, GradientFill
。