powered by simpleCommunicator - 2.0.19     © 2024 Programmizd 02
Map
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / window startup flashing
5 сообщений из 5, страница 1 из 1
window startup flashing
    #40011190
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток комрады!

Кто нибдь может предложит более красивое решение?
Работаю над "красивостью" приложения, суть в следующем:
когда приложение стартует бэкграунд основного окна должен быть полнотью черным, после чего стартует анимация показывающая стартовую заставку.

при стандартной разметке в виде

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<Application x:Class="App02.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:App02"
             StartupUri="MainWindow.xaml">
</Application>

<Window x:Class="App02.MainWindow"
        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:App02"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800" Background="Black">
    <Grid >
        <Frame x:Name="main_frame" NavigationUIVisibility="Hidden"/>
    </Grid>
</Window>



происходит следующее: отображается окно основного приложения но его фон полностью белый, после чего происходит рендеринг разметки и уже прорисовывается визуальное дерево самой формы.
то есть происходит такой небольшой "лаг" отрисовки когда приложение отобразило рамки формы но еще не отрендерило свойства Background и.т.д
это жутко бесит и выглядит убого.

нашел следующее решение:
Код: xml
1.
2.
3.
4.
5.
6.
<Application x:Class="App02.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:App02"
             Startup="Application_Startup">
</Application>


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 private void Application_Startup(object sender, StartupEventArgs e)
        {
            var window = new App02.MainWindow() { WindowState = WindowState.Minimized };
            
            window.Loaded += (o, e1) =>
            {
                window.WindowState = WindowState.Normal;
            };
            window.Show();
            
            
        }




но тут появляется другой "артефакт" отрисовки. да форма стартует на черном фоне, но есть эффект отписовки "восстановления окна из свернутого".

Кто может посоветовать какой то воркараунд вплане старта приложения сразу с черным фоном без всяких бликов?
Нужно по сути добиться такого же поведения старта приложения как если создать обычный проект windows forms и основной форме назначить черный фон, но только проект должен быть wpf
...
Рейтинг: 0 / 0
window startup flashing
    #40011198
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff
отображается окно основного приложения но его фон полностью белый
навскидку - это не фон окна мелькает, а фон фрейма
...
Рейтинг: 0 / 0
window startup flashing
    #40011243
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

не, фрейм можно выпилить и оставить только пустой grid, все равно будет белый проблеск

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<Window x:Class="App02.MainWindow"
        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:App02"
        mc:Ignorable="d"
        Title="MainWindow" Height="485.156" Width="830.938" Loaded="Window_Loaded" Initialized="Window_Initialized" Background="Black">
    <Grid Background="Black" >
        <!--Frame x:Name="main_frame" NavigationUIVisibility="Hidden"/-->


    </Grid>
</Window>
...
Рейтинг: 0 / 0
window startup flashing
    #40012627
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кароче было время повозился с вариантами, вообщем нашел решение:


Код: 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.
<Application
    x:Class="WindowChrome.Demo.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    StartupUri="W1.xaml">
    <Application.Resources>
        <ResourceDictionary>
<Style x:Key="W1Style" TargetType="{x:Type Window}">
        <Setter Property="WindowStyle" Value="None"/>
        <Setter Property="AllowsTransparency" Value="True"/>
        <Setter Property="Background" Value="Black"/>
        <Setter Property="WindowChrome.WindowChrome">
            <Setter.Value>
                <WindowChrome NonClientFrameEdges="None" GlassFrameThickness="0" ResizeBorderThickness="7" CaptionHeight="32"/>
            </Setter.Value>
        </Setter>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Window}">
                    <Border Padding="7 7 7 5">
                        <Grid TextOptions.TextRenderingMode="ClearType" TextOptions.TextFormattingMode="Display">
                            <Border Width="Auto" Height="Auto" Background="Black" BorderBrush="Blue" BorderThickness="1" Padding="0"/>
                        </Grid>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>   
</Style>
        </ResourceDictionary>
    </Application.Resources>
</Application>


Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<Window x:Class="WindowChrome.Demo.W1"
        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:WindowChrome.Demo"
        mc:Ignorable="d"
        Title="W1" Height="450" Width="800" Style="{StaticResource W1Style}">
    <Grid>
        
    </Grid>
</Window>




а дальше начинается настройка ControlTemplate для окна. весь код не привожу там достаточно громоздкий стиль получается.
основная жопа в том что WPF не рабоатет в NC области, и приходится по сути брать на себя отрисовку.
...
Рейтинг: 0 / 0
window startup flashing
    #40016266
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вариант номер два:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<Application x:Class="App07.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:App07"
             StartupUri="MainWindow.xaml" ShutdownMode="OnMainWindowClose">
</Application>

[src]

[src xml]
<Window x:Class="App07.MainWindow"
        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:App07"
        mc:Ignorable="d"
        Title="MainWindow" ShowActivated="False" Width="0" Height="0" WindowStartupLocation="CenterScreen" WindowStyle="None" ShowInTaskbar="False" Loaded="Window_Loaded">
</Window>



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            
            Logo logo = new Logo();
            App.Current.MainWindow = logo;
            logo.Show();
        }
    }




поведение рендеринга дочерних форм чем то отличается от основной формы (нет этого хренвого лага прорисовки белого фона),
не нужно играться с хромом окна

Код: 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.
<Window x:Class="App07.Logo"
        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:App07"
        mc:Ignorable="d"
        Title="Logo" Height="450" Width="800" Background="Black">
    <Window.Triggers>
        <EventTrigger RoutedEvent="Loaded">
            <BeginStoryboard >
                <Storyboard TargetName="logotxt" TargetProperty="Opacity">
                    <DoubleAnimationUsingKeyFrames>
                        <EasingDoubleKeyFrame KeyTime="0:0:0" Value="0"/>
                        <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0"/>
                        <EasingDoubleKeyFrame KeyTime="0:0:3" Value="1"/>
                        <EasingDoubleKeyFrame KeyTime="0:0:5" Value="0"/>
                    </DoubleAnimationUsingKeyFrames>
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </Window.Triggers>
    <Grid>
        <TextBlock x:Name="logotxt" Foreground="White" FontWeight="Bold" FontSize="72" HorizontalAlignment="Center" VerticalAlignment="Center"> this is text for logo</TextBlock>
    </Grid>
</Window>
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / window startup flashing
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]