У меня есть проблема с помощью 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>
Как уже было сказано другими: .NET 4.0 больше не поддерживает BitmapEffects.
В качестве дополнительной информации: поскольку не существует OuterGlowEffect
, который можно было бы использовать со свойством Effect
(по крайней мере, ни одного, о котором я знаю), вы можете заменить эффект растрового изображения с помощью DropShadowEffect
и установите для его свойства ShadowDepth
значение 0. Затем вы можете создать эффект свечения, настроив свойство BlurRadius
.Кроме того, вы также можете настроить свойство Color
, если хотите, чтобы свечение имело другой цвет, чем черный, но, как я вижу из вашего примера кода, вы фактически используете черный как GlowColor
.
Я знаю, что этот обходной путь может быть не таким гибким и удобным, как OuterGlowBitmapEffect
, и он не дает идентичных результатов, но, по крайней мере, он приближается в некоторых ситуациях, и это определенно проще, чем писать пиксель. шейдер самостоятельно ...
Как указано здесь Microsoft, BitmapEffect
устарел в .NET 4. Попробуйте использовать вместо него Effect
.
BitmapEffects больше не поддерживаются в .NET 4.0.
Вместо этого вам следует использовать свойство Effect.
Подробнее см. здесь .
Согласно этой записи в блоге :
5. Классы BitmapEffect теперь не работают.
BitmapEffect, используемый для рендеринга в программном обеспечении и вызвала проблемы с производительностью. BitmapEffect все еще существует, так что ваш приложения будут компилироваться, но BitmapEffect ничего делать не буду.
Взгляните на Bitmap Effects , в котором объясняются некоторые проблемы при использовании новых эффектов на основе графического процессора.