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