Сделать свечение только у индикатора в progress bar wpf c#

232
20 марта 2022, 09:20

Я делаю свечение через DropShadowEffect. Если тупо повесить его на прогресс бар, свечение будет на всем прогресс баре.

Мне нужно чтобы свечение было только на индикаторе(то есть сама эта штука, которая двигается и показывает проценты). Если нажать ПКМ прогресс бару и нажать на правка шаблона, то там будет все то, из чего состоит прогресс бар

Я попробовал добавить свечение и на Indicator, и на Animation - не работает. А если добавить эффект на сам PART_Indicator, то будет вот так:

Answer 1

Без понятия, что у вас там не работает, сделал простенький стиль и вроде все так, как вы хотите:

<Style x:Key="{x:Type ProgressBar}" TargetType="{x:Type ProgressBar}">
    <Setter Property="Foreground" Value="#FFAD16"/>
    <Setter Property="Background" Value="#303030"/>
    <Setter Property="Height" Value="15"/>
    <Setter Property="Border.CornerRadius" Value="8"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ProgressBar}">
                <Border CornerRadius="{TemplateBinding Border.CornerRadius}" Background="{TemplateBinding Background}">
                    <Grid>
                        <Rectangle Name="PART_Track"/>
                        <Decorator x:Name="PART_Indicator" HorizontalAlignment="Left">
                            <Border Background="{TemplateBinding Foreground}" CornerRadius="{TemplateBinding Border.CornerRadius}" >
                                <Border.Effect>
                                    <DropShadowEffect ShadowDepth="0" Color="#FFD10000" BlurRadius="50" />
                                </Border.Effect>
                            </Border>
                        </Decorator>
                    </Grid>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Пояснения что тут:

  • Задаем стартовые значения (цвета, размер, скругление).
  • Далее переопределяем сам вид элемента:
    • Первым идет основной Border, который просто делает нам задний фон с закругленными углами.
      • Внутри этого Border'a расположен PART_Track - объект, который определяет путь индикатора.
      • Также тут сам индикатор (PART_Indicator)
        • Внутри индикатора располагается Border, который как и фон, имеет цвет и закругление, а также нужную нам тень.

В итоге получаем это:

Как видите у нас только индикатор имеет красноватую тень, все остальное не затрагивается.

READ ALSO
Одновременный запуск одной формы в приложении

Одновременный запуск одной формы в приложении

Есть форма, которая делает api запрос через таймерМне нужно запустить несколько таких форм, чтобы они делали api запрос

170
TCPClient async/await C#

TCPClient async/await C#

У меня есть несколько девайсовПрограмма должно эти устройства постоянно пинговать

63
C# Узнать скорость вычесления на GPU (хешрейт)

C# Узнать скорость вычесления на GPU (хешрейт)

Всем доброго времени суток! Столкнулся я с такой вот проблемой: Есть необходимость при помощи C# Net20 рассчитать скорость видеокарты, так как...

97
Кастомный аллокатор

Кастомный аллокатор

Есть такой аллокатор:

68