gpt4 book ai didi

vb.net - VB.NET中的渐变填充

转载 作者:行者123 更新时间:2023-12-04 16:11:27 28 4
gpt4 key购买 nike

为什么下面的简单代码会失败?无论我使用 LinearGradientMode 的哪个值,这段代码总是用从左到右的渐变填充路径。 graphPath 是在别处创建的 GraphicPath 对象(基本上是圆角矩形):

Dim gradBrush as New LinearGradientBrush(rect, color1, color2, LinearGradientMode.Vertical)
graphics.FillPath(gradBrush, graphPath)

更新

令所有人惊讶的是,即使这样也失败了(水平绘制)。只需创建一个新的 VB.NET WinForms 项目并将以下代码粘贴到 Form1 的 Paint 事件中:
 Private Sub Form1_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
Dim gradBrush As New LinearGradientBrush(Me.ClientRectangle, Color.Red, Color.White, LinearGradientMode.BackwardDiagonal)
e.Graphics.FillRectangle(gradBrush, Me.ClientRectangle)
End Sub

所以我认为这与路径构建没有任何关系。

笔记

如果有人能确认这个问题也发生在他们的机器上,我会很高兴,这样我们就知道这是 GDI+ 的问题,而不是我的代码。仅供引用,我已经在带有 .NET Fx 4.0 客户端配置文件和完整版的 WinXP VM 和 Win7 机器(32 位,Aero 模式)上进行了尝试。

最后

首先,感谢所有帮助我发现它的伟大人物。问题是我正在编辑其他人的代码,该代码创建了一个完全命名为 LinearGradientMode 的枚举(以支持他的目的所需的 None 选项)。现在,当他将此枚举的对象发送到 LinearGradientBrush 的构造函数时,C# 编译器会认为最匹配的重载是带“角度”参数的重载(这是我的理论),并将我的渐变模式的值转换为等效的 int (0、1、2、3 和 4 是值)并调用该构造函数,从而在每种情况下产生(几乎)水平梯度。

再次感谢所有参与的人。

最佳答案

确保您的矩形已添加到 GraphicsPath。

关于vb.net - VB.NET中的渐变填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13992674/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com