【发布时间】:2016-01-18 10:46:39
【问题描述】:
这是一个例子:
public MainForm()
{
InitializeComponent();
LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0,0,100,100),Color.Blue, Color.White,angle:0);
brush.WrapMode = WrapMode.Tile; // OK
brush.WrapMode = WrapMode.Clamp; // Causes Unhandled exception alert, offering break
}
在 VS2008 输出窗口中显示:
System.Drawing.dll 中出现了“System.ArgumentException”类型的第一次机会异常 附加信息:参数无效。
(图片http://i.imgur.com/nM2oNm1.png)
这是在 Windows 7 上。
确认 LinearGradientBrush.WrapMode 接受 WrapMode
"获取或设置一个 WrapMode 枚举,该枚举指示此对象的换行模式 线性渐变画笔。”
还有这个 https://msdn.microsoft.com/en-us/library/vstudio/system.drawing.drawing2d.wrapmode(v=vs.90).aspx
确认 WrapMode.Clamp 对渐变有效:
“Clamp 纹理或渐变不平铺。”
【问题讨论】:
-
我可以在 W8.1 上使用 VS15 确认这一点。这看起来像一个错误,因为
Clamp即直到继续,可能最后一种颜色会非常有用。您可以尝试使用InterpolationColors解决问题,但这需要对要填充的尺寸有所了解.. -
谢谢。请输入您的回复作为答案,以便我接受。
-
这是一个奇怪的错误。您可以尝试创建 LinearGradientBrush 的位图图块,然后在 TextureBrush 中使用该位图,当 WrapMode 设置为 Clamp 时不会引发错误。