wpf - 是否可以只渲染 GradientBrush 的一定百分比?

标签 wpf rendering brush lineargradientbrush

考虑以下LinearGadientBrush,“A”。通常,如果您指定该画笔作为矩形的背景,它将用整个渐变填充整个区域,无论大小如何。 (参见 B)。

我们试图说“对于这个特定的控件,仅使用画笔的前 xx% 进行填充”,这样我们就可以实现基于百分比的渐变填充,如“C”中所示。

enter image description here

注意:我们知道我们将负责显示哪个百分比,因为系统无法自动计算百分比代表什么。

我们目前的做法如“D”所示。我们以所需大小的 100% 定义一个矩形(因此填充为 100%),然后将其放置在另一个控件内并左对齐。然后,我们将外部控件的 ClipsToBounds 设置为 true,并将其宽度设置为内部矩形宽度的所需百分比。 (参见 D)这种方法有效,但会在可视化树中添加额外的元素,如果可能的话,我们会尝试消除这些元素。

最佳答案

使用 LinearGradientBrush 的 EndPoint 属性。在您的情况下,如果您设置 EndPoint="2,0" 您应该获得您正在寻找的所需结果。

如果您需要做一些更动态的事情,您可以将点对象绑定(bind)到 EndPoint 属性。如果将该值设置为 1,0,它将显示 100% 的渐变,或者 2,0 将显示前 50% 的渐变。

StartPoint 允许您在渐变的另一侧执行相同的操作。

关于wpf - 是否可以只渲染 GradientBrush 的一定百分比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19371497/

相关文章:

wpf - 在控制上调用 "function"

c# - 在文本 block 文本 WPF 中使用 &

c# - WPF - 网格中的扩展器 - 吃空间

javascript - 递归地循环遍历树,并在迭代之间设置超时

c++ - 一种干净的渲染方式

javascript - HTML 不渲染 JS 中给出的标签位置

wpf - 如何从 WPF 中的 View 模型绑定(bind)数据模板中的 ListView

c# - 如何从字符串设置 Border.BorderBrush

javascript - d3 : brush changes click to mouseover

wpf - wpf/xaml 中的仅角边框