【问题标题】:How to render line to PNG bitmap i WPF?如何在 WPF 中将线条渲染为 PNG 位图?
【发布时间】:2017-05-10 06:48:01
【问题描述】:

我是 WPF 新手,我正在尝试将简单的线条渲染为位图并将其保存到 PNG 文件中。但我得到的是空位图。

我做错了什么?

void RenderLineToFile()
{
    var bitmap = RenderBitMap();
    SaveImageToFile("image.png", bitmap);
}


RenderTargetBitmap RenderBitMap()
{
     int bitmapWidth = 100;
     int bitmapHeight = 100;
     double dpiX = 72;
     double dpiY = 72;         

     RenderTargetBitmap bm = new RenderTargetBitmap(bitmapWidth, bitmapHeight, dpiX, dpiY, PixelFormats.Pbgra32);

     DrawingVisual drawing_visual = new DrawingVisual();
     using (DrawingContext drawing_context = drawing_visual.RenderOpen())
     {
         Pen penBlack = new Pen(Brushes.Black, 1.0);

         drawing_context.DrawLine(penBlack, new Point(0, 0), new Point(100, 100));

         bm.Render(drawing_visual);
     }            
     return bm;
}

public static void SaveImageToFile(string filePath, BitmapSource image)
{
     using (var fileStream = new FileStream(filePath, FileMode.Create))
     {
         BitmapEncoder encoder = new PngBitmapEncoder();
         encoder.Frames.Add(BitmapFrame.Create(image));
         encoder.Save(fileStream);
     }
}

【问题讨论】:

标签: wpf drawing


【解决方案1】:

根据MSDN

必须先关闭 DrawingContext,然后才能呈现其内容...

尝试在 using 子句之外使用 bm.Render(drawing_visual);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-21
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 2020-10-05
    • 2014-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多