C # WPF ненормальное использование процессора для анимации - PullRequest
1 голос
/ 25 мая 2010

Я разрабатываю WPF-приложения и клиентские отчеты о чрезвычайно высокой загрузке ЦП (90%) (хотя я не могу повторить это поведение) Я проследил bootleneck до этих строк. Это простая светящаяся анимация для небольшого одиночного светодиодного управления (мигающий светодиод). Что может быть причиной для этой простой анимации, потребляющей ТАК огромные ресурсы процессора?

         <Trigger Property="State"> 
            <Trigger.Value> 
                <local:BlinkingLedStatus>Blinking</local:BlinkingLedStatus> 
            </Trigger.Value> 
            <Trigger.EnterActions> 
                <BeginStoryboard Name="beginStoryBoard"> 
                    <Storyboard> 
                        <DoubleAnimation Storyboard.TargetName="glow" Storyboard.TargetProperty="Opacity" AutoReverse="True" From="0.0" To="1.0" Duration="0:0:0.5" RepeatBehavior="Forever"/> 
                    </Storyboard> 
                </BeginStoryboard> 
            </Trigger.EnterActions> 
            <Trigger.ExitActions> 
                <StopStoryboard BeginStoryboardName="beginStoryBoard"/> 
            </Trigger.ExitActions> 
        </Trigger> 

Ответы [ 2 ]

3 голосов
/ 25 мая 2010

Скорее всего, у вашего клиента нет аппаратного ускорения. Сегодняшних (и даже вчерашних) видеокарт должно быть достаточно для рендеринга WPF. Скажите ему, чтобы обновить его графические драйверы. Вы также можете немного настроить анимацию, установив Timeline.DesiredFrameRate="20" (или ниже, если она вам подходит) на вашей StoryBoard.

2 голосов
/ 25 мая 2010

Анимации и эффекты WPF требуют значительных вычислительных ресурсов. Они требуют аппаратного ускорения для бесперебойной работы. Это значит, что для хорошей игры нужна приличная видеокарта.

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

Однажды я написал простое приложение, в котором широко использовались всевозможные эффекты и анимация, и его едва можно было использовать на средней машине. Я заглушил эффекты, и все стало гладко.

...