如何使用GDI+在多边形上绘制渐变边框;通过C#/WinForms?

如何使用GDI+在多边形上绘制渐变边框;通过C#/WinForms?,c#,.net,winforms,gdi+,C#,.net,Winforms,Gdi+,我有各种形状和大小的多边形。它们具有实心填充,当前具有实心边框 我想给多边形一个渐变的边缘来软化它们 到目前为止,我已经尝试使用笔和LinearGradientBrush一起使用,虽然它产生的效果非常有趣,但肯定不是我想要的;) 我已经浏览了System.Drawing.Drawing2D名称空间,但似乎没有任何其他类适用于此目的 我已经搜索过了,我能找到的文章大多是关于为矩形创建边框的,这非常简单,或者是不相关的 总而言之,有人能用GDI+在多边形上绘制渐变边界吗?也许你先前尝试的屏幕截图和你

我有各种形状和大小的多边形。它们具有实心填充,当前具有实心边框

我想给多边形一个渐变的边缘来软化它们

到目前为止,我已经尝试使用
LinearGradientBrush
一起使用,虽然它产生的效果非常有趣,但肯定不是我想要的;)

我已经浏览了
System.Drawing.Drawing2D
名称空间,但似乎没有任何其他类适用于此目的

我已经搜索过了,我能找到的文章大多是关于为矩形创建边框的,这非常简单,或者是不相关的


总而言之,有人能用GDI+在多边形上绘制渐变边界吗?

也许你先前尝试的屏幕截图和你想要的模型会有所帮助

尽管我怀疑你遇到的问题是梯度的方向和偏移在整个形状中是一致的,并且不会随着多边形线条的方向而改变


你看了那张照片了吗?()如果你不能用钢笔画出形状,也许你可以用两个“填充”来完成,第一个(边框)比第二个(内部)稍大。

我想我已经完全按照你的要求做了,但在我的例子中,我用它在文本上创建了柔和的阴影

我做了以下工作:

  • 绘制文本(在您的案例中: 多边形)到位图
  • 申请 alpha上的软化过滤器 仅频道
  • 重复步骤2,如下所示 需要很多次才能得到想要的结果 梯度宽度
  • 最后画出 将结果添加到结果上 位图/屏幕

  • 是的,LinearGradientBrush的问题在于渐变保持在同一路线上,因此不跟随多边形的边缘。PathGradientBrush可能会完成这项工作,但它通常用于在多边形内部放置渐变,而不是在边界上,因此要使用它,我必须使用一种算法将多边形放大到足以在其边界内与边界相交。我目前正在考虑使用PathGradientBrush,但它给了我一个3点多边形的“内存不足”异常,这并不令人鼓舞。我会坚持下去,谢谢你的建议:)