有人能告诉我如何增加Silverlight渐变画笔上的“色带”数量吗?
这个问题在下面标记为已解答,但它实际上不是使用位图而不是渐变画笔的解决方案,因为我的用户可以动态修改其背景。当使用全屏渐变时,这是最明显的。
答案 0 :(得分:0)
不幸的是,我只能给你半个答案 - 关于为什么会发生这种情况的一般原则以及如何避免它。至于SL的实现,我只能给你一些一般性的想法,因为我不是那里的专家。
这些波段是由于显示器的颜色深度有限造成的。为了减少这种影响,必须使梯度稍微有点嘈杂。最简单的方法是将梯度中的颜色计算为浮点数,然后以加权随机方式将其舍入为整数 - 如下所示:
correct_value = linear_gradient(x,y) // e.g 25.3
whole_part = round_down(correct_value) // 25
frac_part = correct_value - whole_part // 0.3
color_used = whole_part
if (true_with_probability(frac_part)):
color_used = color_used + 1 // color_used == 25 with 70% chance
// 26 with 30% chance
以下是使用此技术的示例(左侧是简单舍入到最接近的整数的效果,右侧是带噪声的舍入):
至于如何在你的情况下实现它 - 我假设有一些方法可以创建一个自定义Brush
对象,允许你按像素进行计算,或者某种着色器功能可以救命。如果那些不可能,你也可以使用这个逻辑简单地生成一个位图,并使用该位图作为画笔(我相信这将是ImageBrush
,但这只是来自谷歌搜索)。
也许拥有更多Silverlight知识的人可以插入并在这种情况下提供最佳实现。