将画布保存到图片看起来太像素化了

时间:2017-11-10 02:50:14

标签: c# wpf canvas png

我目前正在制作我的第一个WPF项目,为纸牌游戏制作卡片并将其作为PNG保存到文件夹中。现在我正在使用解释in this other answer I found的方法。这是我正在使用的代码:

private void saveCard()
    {
        Rect bounds = VisualTreeHelper.GetDescendantBounds(cardArea);
        double dpi = 96d;


        RenderTargetBitmap rtb = new RenderTargetBitmap((int)bounds.Width, (int)bounds.Height, dpi, dpi, System.Windows.Media.PixelFormats.Default);


        DrawingVisual dv = new DrawingVisual();
        using (DrawingContext dc = dv.RenderOpen())
        {
            VisualBrush vb = new VisualBrush(cardArea);
            dc.DrawRectangle(vb, null, new Rect(new Point(), bounds.Size));
        }

        rtb.Render(dv);

        BitmapEncoder pngEncoder = new PngBitmapEncoder();
        pngEncoder.Frames.Add(BitmapFrame.Create(rtb));

        try
        {
            System.IO.MemoryStream ms = new System.IO.MemoryStream();

            pngEncoder.Save(ms);
            ms.Close();

            System.IO.File.WriteAllBytes(System.AppDomain.CurrentDomain.BaseDirectory + "/Heroes/" + HeroName.Content + ".png", ms.ToArray());
        }
        catch (Exception err)
        {
            MessageBox.Show(err.ToString(), "Error", MessageBoxButton.OK, MessageBoxImage.Error);
        }
    }

它工作正常,但我注意到保存的图片看起来像“像素化”。与画布中的相比,甚至是屏幕截图相比,这一点尤为明显。 Here is an example.

我检查了两者的分辨率,它们具有相同的尺寸。我究竟做错了什么?我能做些什么来解决它吗?我应该将图片保存在另一种文件类型下吗?

请告诉我。

0 个答案:

没有答案