我正在开发一个使用Windows Composition API的UWP应用程序。
有一个名为splitViewSideBarBlur
的图像控件。使用以下扩展方法将此图像的源设置为另一个XAML元素的位图:
public static async Task<IRandomAccessStream> RenderToRandomAccessStream(this UIElement element)
{
if (element == null) throw new NullReferenceException();
var rtb = new RenderTargetBitmap();
await rtb.RenderAsync(element);
var pixelBuffer = await rtb.GetPixelsAsync();
var pixels = pixelBuffer.ToArray();
var displayInformation = DisplayInformation.GetForCurrentView();
var stream = new InMemoryRandomAccessStream();
var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream);
encoder.SetPixelData(BitmapPixelFormat.Bgra8,
BitmapAlphaMode.Premultiplied,
(uint)rtb.PixelWidth,
(uint)rtb.PixelHeight,
displayInformation.RawDpiX,
displayInformation.RawDpiY,
pixels);
await encoder.FlushAsync();
stream.Seek(0);
return stream;
}
我使用此扩展函数来获取特定XAML元素的图像,并将其保存到名为BitmapImage
的{{1}}变量中。该位图图像被设置为splitViewBlurImage
元素的背景。接下来,我应用GaussianBlur并尝试将新的模糊图像设置回SplitView。但是,新图像拒绝模糊。以下是代码:
SplitView
我在这里做错了什么?背景图像很好,并且具有黑色色调,但图像根本不模糊。