.NET Framework 4 в WPF не показывает растровый эффект - PullRequest
5 голосов
/ 19 мая 2010

У меня проблема с использованием VS2010 и Framework версии 4 с растровыми эффектами. Если у меня есть приведенный ниже код и я запускаю его в приложении WPF с использованием клиентского профиля .NET Framework 4, эффект растрового изображения не отображается. Если я устанавливаю версию фреймворка на .NET Framework 3.5 Client Profile (и не изменяю код), он работает как положено. Сначала я думал, что это проблема в моем приложении, но я удалил код и поместил его в отдельное отдельное приложение, и оно ведет себя так же. Кто-нибудь еще подтвердит, что такая же проблема возникает?

Что здесь происходит?

Платформа версии 4 в VS2010 просто игнорирует эффект растрового изображения.

<Window.Resources>
    <Style x:Key="SectionHeaderTextBlockStyle" TargetType="{x:Type TextBlock}">
        <Setter Property="FontFamily" Value="Segoe UI"/>
        <Setter Property="FontSize" Value="18"/>
        <Setter Property="FontWeight" Value="Bold"/>
        <Setter Property="VerticalAlignment" Value="Center"/>
        <Setter Property="Foreground" Value="LightGreen"/>
        <Setter Property="BitmapEffect">
            <Setter.Value>
                <OuterGlowBitmapEffect GlowColor="Black"  GlowSize="3" />
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>

<Grid VerticalAlignment="Center" HorizontalAlignment="Center">
    <TextBlock Text="Contact Details" Style="{DynamicResource SectionHeaderTextBlockStyle}"/>
</Grid>

Ответы [ 5 ]

12 голосов
/ 19 мая 2010

Как уже говорили другие: .NET 4.0 больше не поддерживает BitmapEffects.

В качестве дополнительной информации: поскольку нет OuterGlowEffect, который можно использовать со свойством Effect (по крайней мере, ни одного из известных мне), вы можете заменить растровый эффект на DropShadowEffect и установите его ShadowDepth свойство равным 0. Затем вы можете создать эффект свечения, настроив свойство BlurRadius. Кроме того, вы также можете настроить свойство Color, если хотите, чтобы свечение имело другой цвет, чем черный, но, как я вижу из вашего примера кода, вы фактически используете черный в качестве GlowColor.

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

4 голосов
/ 19 мая 2010

Как указано здесь от Microsoft, BitmapEffect устарел с .NET 4. Попробуйте использовать Effect вместо.

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

BitmapEffects больше не поддерживается в .NET 4.0.

Вместо этого следует использовать свойство Effect.

Подробнее см. здесь .

1 голос
/ 19 мая 2010

Согласно этому сообщению в блоге :

5.Классы BitmapEffect теперь недоступны.
BitmapEffect используется для рендеринга в программном обеспечении и вызывает проблемы перфорации.BitmapEffect все еще там, поэтому ваши приложения будут компилироваться, но BitmapEffect ничего не сделает.

0 голосов
/ 24 мая 2010

Взгляните на Растровые эффекты , в которых объясняются некоторые проблемы при использовании новых эффектов на основе графического процессора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...