C# 为什么将LinearGradientBrush.WrapMode设置为钳制会失败,并出现ArgumentException(“参数无效”)?
下面是一个例子:C# 为什么将LinearGradientBrush.WrapMode设置为钳制会失败,并出现ArgumentException(“参数无效”)?,c#,winforms,windows-7,C#,Winforms,Windows 7,下面是一个例子: public MainForm() { InitializeComponent(); LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0,0,100,100),Color.Blue, Color.White,angle:0); brush.WrapMode = WrapMode.Tile; // OK brus
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”的首次意外异常
其他信息:参数无效
(图)
这是在Windows7上
这里的文档
确认LinearGradientBrush.WrapMode接受WrapMode
“获取或设置一个WrapMode枚举,该枚举指示此文件的包装模式
LinearGradientBrush。“
还有这个
确认WrapMode.Clamp对渐变有效:
“钳制纹理或渐变未平铺。”我可以通过Windows 8.1上的VS2015确认这一点 对我来说,这看起来像是一个bug,因为
钳制
即,使用untiled continuation,最后一种颜色可能非常有用
您可以尝试使用InterpolationColors
解决问题,但这需要一些填充尺寸的知识
有关使用InterpolationColors
更新:Lars的想法看起来也很有趣:用
LinearGradientBrush
创建一个平铺,然后将其与TextureBrush
一起使用。对于我来说,使用SetInterpolationColor
(C++)缩放向量并重复结束颜色效果很好。我在两端留出一个10*VectorSize的空间,并对停止点进行规格化
我可以通过W8.1上的VS15确认这一点。这看起来像是一个bug,因为
climp
ie不间断延续,最后一种颜色可能会非常有用。您可以尝试使用InterpolationColors
解决问题,但这需要一些填充尺寸的知识。谢谢。请输入您的回答,以便我可以接受。这是一个奇怪的错误。您可以尝试创建LinearGradientBrush的位图平铺,然后在TextureBrush中使用该位图,当其WrapMode设置为钳制时不会引发错误。