【UWP】用Win2D+Composition API实现高斯模糊的问题
vb.net吧
全部回复
仅看楼主
level 13
sscs 楼主
看到教程https://blogs.windows.[滑稽]com/buildingapps/2016/09/12/creating-beautiful-effects-for-uwp/#ozmC5X36LQele8oX.97
试着改写成VB:
Public Sub ef()
Dim _compositor = ElementCompositionPreview.GetElementVisual(gd).Compositor
Dim effect = New GaussianBlurEffect()
effect.Source = New CompositionEffectSourceParameter("Backdrop")
effect.BlurAmount = 10.0F
effect.BorderMode = EffectBorderMode.Hard
Dim blurEffectFactory = _compositor.CreateEffectFactory(effect)
Dim _brush = blurEffectFactory.CreateBrush()
Dim destinationBrush = _compositor.CreateBackdropBrush()
_brush.SetSourceParameter("Backdrop", destinationBrush)
Dim blurSprite = _compositor.CreateSpriteVisual()
blurSprite.Brush = _brush ElementCompositionPreview.SetElementChildVisual(gd, blurSprite)
End Sub
Private Sub MainPage_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
Call ef()
End Sub
XAML:
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid >
<Grid.Background>
<ImageBrush Stretch="UniformToFill" ImageSource="Assets/111.jpg"/>
</Grid.Background>
</Grid
<Grid x:Name="gd" />
</Grid>
然后运行,发现没有任何模糊效果。。。。我在可视树里看见已经添加进了SpriteVisual
@Nukepayload2
2017年03月06日 21点03分 1
level 13
怀疑Xaml抄错了
_
2017年03月07日 01点03分 2
我还去看了Win2D改成的Sharp2D,他的C#示例就没问题[不高兴]
2017年03月07日 10点03分
level 13
跟语言真的没什么关系。楼主需要仔细检查哪里抄错了。不要放过任何细节,比如系统版本。
_
2017年03月07日 10点03分 4
嗯,发现最后加上这两行就行 Dim bindSizeAnimation As ExpressionAnimation =_compositor.CreateExpressionAnimation("visual.Size") bindSizeAnimation.SetReferenceParameter("visual", visual) blurSprite.StartAnimation("Size", bindSizeAnimation)
2017年03月08日 16点03分
注释是说“保证效果拥有者和可视化始终保持相同大小”,看代码好像是动画?不太懂[汗] Dim visual As Visual = ElementCompositionPreview.GetElementVisual(Me)
2017年03月08日 16点03分
回复 天韵骄子 : 看来你忘记写大小绑定了。也可以不用动画绑定大小。 _
2017年03月11日 16点03分
1