首页 > 解决方案 > WPF C#捕获具有半透明背景的画布图像

问题描述

更新:不是重复的。

我的问题不是如何截屏。我知道这一点,但这不是我需要的。我可以让其他人控制画布,我不想捕捉它们,而只是捕捉画布中的图像,图像在画布下透明可见。

我需要在不透明度为 50% 的画布上捕获图像,但捕获的图像具有黑色背景,而不是背景中的图像(桌面)。

我使用此代码来捕获图像:

MemoryStream ms = new MemoryStream();
RenderTargetBitmap rtb = new RenderTargetBitmap(1920, 1080, 96d, 96d, PixelFormats.Default);
rtb.Render(canvasCapture);
BmpBitmapEncoder BmpEncoder = new BmpBitmapEncoder();
BmpEncoder.Frames.Add(BitmapFrame.Create(rtb));
BmpEncoder.Save(ms);

这是画布:

<Canvas x:Name="canvasCapture" Background="#7F0F0F0E" />

在我的应用程序中,我可以在画布下看到透明的桌面,但捕获的图像具有黑色背景。如何在应用程序中捕获具有背景的图像?

标签: c#wpfrendertargetbitmap

解决方案


位图图像不支持透明背景。它会自动用黑色填充透明区域。您可以尝试将图像保存并使用为 PNG。


推荐阅读