为什么将LinearGradientBrush.WrapMode设置为Clamp失败并显示ArgumentException(“参数无效”)?
问题描述:
下面是一个例子:为什么将LinearGradientBrush.WrapMode设置为Clamp失败并显示ArgumentException(“参数无效”)?
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.ArgumentException' 的第一次机会异常发生在System.Drawing.dll程序 其他信息:参数无效。
(PIC http://i.imgur.com/nM2oNm1.png)
这是Windows 7
证实LinearGradientBrush.WrapMode接受WrapMode
“获取或设置一个WrapMode枚举指示此 LinearGradientBrush的换行模式。“
这 https://msdn.microsoft.com/en-us/library/vstudio/system.drawing.drawing2d.wrapmode(v=vs.90).aspx
确认WrapMode.Clamp有效期为梯度:
“夹住纹理或梯度不平铺”。
我可以在W8.1上用VS15确认这一点。这看起来像一个错误,因为'Clamp'即不带色的延续,可能是最后一种颜色会非常有用。您可以尝试使用'InterpolationColors'解决方案,但这需要您填写一些尺寸的知识。 – TaW
谢谢。请输入您的答案作为答案,以便我可以接受。 – ChrisJJ
这是一个奇怪的错误。您可以尝试创建LinearGradientBrush的位图切片,然后在TextureBrush中使用该位图,当WrapMode设置为钳位时不会引发错误。 – LarsTech