将WPF UserControl保存为矢量图像

本文关键字:图像 保存 WPF UserControl | 更新日期: 2023-09-27 18:10:30

我已经创建了一个WPF UserControl库。我想把每个UserControl(在默认设置中)的矢量图片放到文档中。所以我的问题是:我如何创建一个UserControl的矢量图像?

谢谢你的努力

将WPF UserControl保存为矢量图像

捕获矢量图像似乎很困难,您的控制仅由矢量图形组成吗?如果您只是希望获得png或bmp,下面的代码可能会有所帮助:

ImageCapturer.SaveToPng(AnyControl, "Capture.png");
class ImageCapturer
{               
    public static void SaveToBmp(FrameworkElement visual, string fileName)
    {
        var encoder = new BmpBitmapEncoder();
        SaveUsingEncoder(visual, fileName, encoder);
    }
    public static void SaveToPng(FrameworkElement visual, string fileName)
    {
        var encoder = new PngBitmapEncoder();
        SaveUsingEncoder(visual, fileName, encoder);
    }
    private static void SaveUsingEncoder(FrameworkElement visual, 
                 string fileName, BitmapEncoder encoder)
    {
        RenderTargetBitmap bitmap = new RenderTargetBitmap(
               (int)visual.ActualWidth, 
               (int)visual.ActualHeight, 96, 96, PixelFormats.Pbgra32);
        bitmap.Render(visual);
        BitmapFrame frame = BitmapFrame.Create(bitmap);
        encoder.Frames.Add(frame);
        using (var stream = File.Create(fileName))
        {
            encoder.Save(stream);
        }
    }
}