Платформа.NET 4 в WPF, не показывающем растровый эффект

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

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

Платформа версии 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
задан Adrian 19 May 2010 в 04:33
поделиться

5 ответов

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

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

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

12
ответ дан 18 December 2019 в 07:53
поделиться

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

4
ответ дан 18 December 2019 в 07:53
поделиться

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

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

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

3
ответ дан 18 December 2019 в 07:53
поделиться

Согласно этой записи в блоге :

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

1
ответ дан 18 December 2019 в 07:53
поделиться

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

0
ответ дан 18 December 2019 в 07:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: