为什么 WPF ProgressBar PART_Indicator 添加不透明度?

问题描述 投票:0回答:1

我正在尝试为 WPF 中的 ProgressBar 控件制作自定义样式。但 PART_Indicator 正在降低栏右侧的不透明度。 (查看25%、50%、75%的例子)

当栏为 100% 时,这种情况就不会发生。 显示问题的示例屏幕截图 (50%):

一定是这样,不透明度降低(100%):

源代码:http://pastebin.com/jyTDYJjW

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Style TargetType="ProgressBar">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ProgressBar">
                    <Border BorderThickness="1" BorderBrush="#1E1E1E">
                        <Grid>
                            <Rectangle Name="PART_Track">
                                <Rectangle.Fill>
                                    <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                                        <GradientStop Color="#2B2B2B" Offset="0"/>
                                        <GradientStop Color="#323232" Offset="1"/>
                                    </LinearGradientBrush>
                                </Rectangle.Fill>
                            </Rectangle>
                            <Border Name="PART_Indicator" BorderThickness="1" HorizontalAlignment="Left">
                                <Border.BorderBrush>
                                    <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                                        <GradientStop Color="#85C0F1" Offset="0"/>
                                        <GradientStop Color="#4C77A3" Offset="1"/>
                                    </LinearGradientBrush>
                                </Border.BorderBrush>
                                <Rectangle>
                                    <Rectangle.Fill>
                                        <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                                            <GradientStop Color="#66A3E2" Offset="0"/>
                                            <GradientStop Color="#5387BA" Offset="0.5"/>
                                            <GradientStop Color="#4B79AF" Offset="0.5"/>
                                            <GradientStop Color="#385D87" Offset="1"/>
                                        </LinearGradientBrush>
                                    </Rectangle.Fill>
                                </Rectangle>
                            </Border>
                        </Grid>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>

这个问题可能与默认的航空风格有关,但我不确定。

所以我的问题是:如何删除这种不透明度渐变裁剪或 WPF 正在执行的任何操作?

wpf xaml progress-bar
1个回答
2
投票

尝试将

SnapsToDevicePixels="True"
添加到模板中名称为
Rectangle
PART_Indicator

SnapsToDevicePixels 属性的 MSDN 文档

© www.soinside.com 2019 - 2024. All rights reserved.