<Grid>
<Image x:Name="BackgroundImage" Source="/Assets/background.png" />
<Rectangle x:Name="ClippingRect" Margin="50" Fill="#30f0" />
</Grid>
Jak zastosować maskę alfa lub maskę przycinającą, aby wszystko oprócz prostokąta zostało zamazane?jak zastosować maskę do CompositionBrush
robię zwykle: GraphicsEffect-> EffectFactory-> szczotek> Ustaw SpriteVisual
var graphicsEffect = new BlendEffect
{
Mode = BlendEffectMode.Multiply,
Background = new ColorSourceEffect
{
Name = "Tint",
Color = Windows.UI.Color.FromArgb(50,0,255,0),
},
Foreground = new GaussianBlurEffect()
{
Name = "Blur",
Source = new CompositionEffectSourceParameter("Backdrop"),
BlurAmount = (float)20,
BorderMode = EffectBorderMode.Hard,
}
};
var blurEffectFactory = _compositor.CreateEffectFactory(graphicsEffect,
new[] { "Blur.BlurAmount", "Tint.Color" });
var _brush = blurEffectFactory.CreateBrush();
_brush.SetSourceParameter("Backdrop", _compositor.CreateBackdropBrush());
var blurSprite = _compositor.CreateSpriteVisual();
blurSprite.Size = new Vector2((float)BackgroundImage.ActualWidth, (float)BackgroundImage.ActualHeight);
blurSprite.Brush = _brush;
ElementCompositionPreview.SetElementChildVisual(BackgroundImage, blurSprite);
Czy możesz podać zrzut ekranu z oczekiwanym wynikiem? –
Jeśli nie podasz rozwiązania komuś, kto ma większą wiedzę na temat WPF niż ja, czy możesz po prostu zamazać całe tło, a następnie nałożyć na nie fragment obrazu bez rozmycia? – wablab
Bądź mną - dostałbym dla narzędzi GDI + i modyfikację bitmapy bieżących pikseli – Tatranskymedved