xaml wpf - 渐变画笔资源无法正常工作

Posted

技术标签:

【中文标题】xaml wpf - 渐变画笔资源无法正常工作【英文标题】:xaml wpf - Gradient Brush resource doesn't work correctly 【发布时间】:2022-01-19 15:38:58 【问题描述】:

我已经迫不及待地想找到为什么会发生这种情况的答案......这是我的代码:

资源字典

<Color x:Key="ControlStrokeColorDefault">#0F000000</Color>
<Color x:Key="ControlStrokeColorSecondary">#29000000</Color>
    
<LinearGradientBrush x:Key="ControlElevationBorderBrush" MappingMode="Absolute" StartPoint="0,0" EndPoint="0,3">
        <LinearGradientBrush.RelativeTransform>
            <ScaleTransform CenterY="0.5" ScaleY="-1" />
        </LinearGradientBrush.RelativeTransform>
        <LinearGradientBrush.GradientStops>
            <GradientStop Offset="0.33" Color="DynamicResource ControlStrokeColorSecondary" />
            <GradientStop Offset="1.0" Color="DynamicResource ControlStrokeColorDefault" />
        </LinearGradientBrush.GradientStops>
</LinearGradientBrush>

面板

<Grid Background="#29000000">
        <WrapPanel Background="#F7F7F7"  VerticalAlignment="Center" HorizontalAlignment="Center">
            <Border Margin="20" Width="100" Height="60" BorderThickness="2" BorderBrush="DynamicResource ControlElevationBorderBrush">
                <TextBlock>Ok</TextBlock>
            </Border>
            <Border Margin="20" Width="100" Height="100" BorderThickness="2" BorderBrush="DynamicResource ControlElevationBorderBrush">
                <TextBlock>???</TextBlock>
            </Border>
        </WrapPanel>
</Grid>

作为Result,我知道梯度仅在第一个元素上计算...这是 wpf 错误还是我遗漏了什么?

【问题讨论】:

【参考方案1】:

这是因为 ScaleTransform 中的 ScaleY="-1" Scale 在不同的高度创建不同的尺寸

【讨论】:

我知道这是因为 ScaleY="-1" 我的问题是为什么它不计算其他高度

以上是关于xaml wpf - 渐变画笔资源无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

WPF--XAML资源

WPF--XAML资源

[UWP]使用CompositionLinearGradientBrush实现渐变画笔并制作动画

沿环形路径创建渐变画笔

DynamicResource 不工作,但 StaticResource 可以吗?

wpf 控件四周扩散颜色