【发布时间】:2015-11-02 16:07:38
【问题描述】:
在我的 Web 项目中,我需要将 XAML 帧动态呈现为动画 gif。它现在正在工作 - 我正在使用以下代码将每一帧渲染为 png:
// Save current canvas transform
var transform = surface.LayoutTransform;
// reset current transform (in case it is scaled or rotated)
surface.LayoutTransform = null;
// Get the size of canvas
var size = new System.Windows.Size(surface.Width, surface.Height);
// Measure and arrange the surface
// VERY IMPORTANT
surface.Measure(size);
surface.Arrange(new Rect(size));
// Create a render bitmap and push the surface to it
var renderBitmap =
new RenderTargetBitmap(
(int)size.Width,
(int)size.Height,
96d,
96d,
PixelFormats.Pbgra32);
renderBitmap.Render(surface);
Bitmap bmp;
// Create a file stream for saving image
using (var stream = new MemoryStream()) {
// Use png encoder for our data
var encoder = new PngBitmapEncoder();
// push the rendered bitmap to it
encoder.Frames.Add(BitmapFrame.Create(renderBitmap));
// save the data to the stream
encoder.Save(stream);
bmp = new Bitmap(stream);
}
return bmp;
然后使用 MagickImage 创建动画 gif。 但是当我将它放在网页上(在 svg 画布上)时,背景不是透明的,而是黑色的。 如何让它透明?
【问题讨论】:
标签: wpf canvas svg gif transparent