Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
5 / 5 / 4
Регистрация: 20.01.2011
Сообщений: 350
1

ProgressBar с переопределенным стилем - качество отображения

18.07.2017, 09:56. Показов 643. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет. В продолжении этой темы.
Сделал стиль для ProgressBar в виде "эконки":
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<Window x:Class="ProgressVisual.Window3"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:ProgressVisual"
        mc:Ignorable="d" Loaded="Window3_OnLoaded"
        WindowStartupLocation="CenterScreen" SizeToContent="WidthAndHeight"
        Title="Window3" >
    <Window.Resources>
        <Canvas x:Key="windows" Width="24" Height="24">
            <Path Data="M3,12V6.75L9,5.43V11.91L3,12M20,3V11.75L10,11.9V5.21L20,3M3,13L9,13.09V19.9L3,18.75V13M20,13.25V22L10,20.09V13.1L20,13.25Z" Fill="Black" />
            <Canvas.RenderTransform>
                <RotateTransform Angle="90"></RotateTransform>
            </Canvas.RenderTransform>
        </Canvas>
        <Style TargetType="ProgressBar" x:Key="VolumeMeter">
            <Setter Property="SnapsToDevicePixels" Value="True"></Setter>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ProgressBar" >
                        <Grid x:Name="Root">
                            <Border 
                                SnapsToDevicePixels="True"
                                Name="PART_Track" 
                                BorderBrush="Transparent"
                                BorderThickness="1">
                                <Border.Background>
                                    <LinearGradientBrush EndPoint="0,0.5" StartPoint="0.5,0.5">
                                        <GradientStop Color="#FF394175" Offset="0"/>
                                        <GradientStop Color="#FF394175" Offset="0.45"/>
                                        <GradientStop Color="#FFDC482D" Offset="0.45"/>
                                        <GradientStop Color="#FFDC482D" Offset="1"/>
                                    </LinearGradientBrush>  
                                </Border.Background>
                                <Border.OpacityMask>
                                    <VisualBrush Visual="{StaticResource windows}"></VisualBrush>
                                </Border.OpacityMask>
                            </Border>
                            <Border 
                                SnapsToDevicePixels="True"
                                BorderBrush="Transparent" 
                                BorderThickness="1" >
                                <DockPanel >
                                    <Rectangle Name="PART_Indicator" ></Rectangle>
                                    <Rectangle Name="Mask" MinWidth="{TemplateBinding Width}" Fill="LightGray" ></Rectangle>
                                </DockPanel>
                                <Border.OpacityMask>
                                    <VisualBrush Visual="{StaticResource windows}"></VisualBrush>
                                </Border.OpacityMask>
                            </Border>
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="Orientation" Value="Vertical">
                                <Setter TargetName="Root" Property="LayoutTransform">
                                    <Setter.Value>
                                        <RotateTransform Angle="270" />
                                    </Setter.Value>
                                </Setter>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>
    <Grid>
            <ProgressBar Width="300" Height="300" Orientation="Vertical" Style="{StaticResource VolumeMeter}" Name="ProgressBar" Margin="10" />
    </Grid>
</Window>
В коде только бесконечное вращение прогресса:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using System.Threading.Tasks;
using System.Windows;
 
namespace ProgressVisual
{
    public partial class Window3 : Window
    {
        public Window3()
        {
            InitializeComponent();
        }
 
        private async void Window3_OnLoaded(object sender, RoutedEventArgs e)
        {
            while (true)
            {
                ProgressBar.Minimum = 0;
                ProgressBar.Maximum = 100;
                for (int i = 0; i < 100; i++)
                {
                    await Task.Delay(50);
                    ProgressBar.Value = i;
                }
            }
        }
    }
}
Проблема в том, что качество ProgressBar просто ужасное. Нет никакой четкости по краям "иконки". И в момент работы прогресса при заполнении ProgressBar, пока он еще серый - видны края цветной части. На скриншоте все видно. Проверить можете легко - весь код в листниге
Миниатюры
ProgressBar с переопределенным стилем - качество отображения  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.07.2017, 09:56
Ответы с готовыми решениями:

Отображение ProgressBar со стилем ProgressBarStyle.Marquee
Добрый день! Нужно на форме отобразить процесс работы ProgressBar. (с заданным стилем ...

Как улучшить качество отображения видео в DirectShow?
Подскажите, как можно улучшить качество видео при работе с DirectShow? А то мягко говоря очень...

Разница между стилем css и стилем в коде html
Такой код &lt;html&gt; &lt;head&gt; &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=UTF-8&quot;&gt;...

ProgressBar для отображения процесса архивации
Опыта в C# практически нет. И очень по Большой нужде пришлось столкнуться. Поэтому не судите с...

2
879 / 558 / 291
Регистрация: 21.11.2012
Сообщений: 1,553
20.07.2017, 10:07 2
Modis,

тыц
1
5 / 5 / 4
Регистрация: 20.01.2011
Сообщений: 350
20.07.2017, 10:25  [ТС] 3
Цитата Сообщение от hamin Посмотреть сообщение
Modis,
тыц
Спасибо. Как-то давно видел эту статью. Но проблема не только в этом. Если вы построите и запустите проект из топика, то увидите, что прогрессБар заполняется двумя цветами. Так вот - в момент когда прогрессБар еще серый, то вокруг изображения выидно эти цвета. Причем совсем немного, но в глаза бросается
0
20.07.2017, 10:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.07.2017, 10:25
Помогаю со студенческими работами здесь

ProgressBar для отображения выполнения SQL-запроса
Подскажите, как реализовать ProgressBar для SQL запроса. Запрос обычный SELECT... FROM ... LEFT...

ProgressBar вместе с LabelText для отображения процентов прогресса
Добрый день. Хочу чтобы в месте с ProgressBar еще бежали проценты. подскажите как? row = 4567;...

Использование ProgressBar для отображения времени проигрывания файла MediaPlayer
У меня вопрос, как можно задействовать элемент управления progressBar для отображения времени...

ProgressBar для отображения процесса удаления файлов (с учетом размера файлов)
Есть папки, которые периодически заполняются ненужными файлами. Нужно создать прогрессБар на каждую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru