将画布保存为图像可以在图像WPF顶部保存黑色区域c#

时间:2014-05-19 14:32:40

标签: c# wpf canvas save

我的问题是,在从画布中保存后,我正在创建图像顶部黑色区域增大的图像。

每次保存图像时,顶部的黑色区域会增大,图像底部的部分会消失。

创建图像时,它将作为画布的背景加载:

    public void LoadImage(string fileName)
    {
        BitmapImage bitmap;
        using (FileStream stream = new FileStream(fileName, FileMode.Open))
        {
            bitmap = new BitmapImage();
            bitmap.BeginInit();
            bitmap.StreamSource = stream;
            bitmap.CacheOption = BitmapCacheOption.OnLoad;
            bitmap.EndInit();
            bitmap.Freeze();
        }
        ImageBrush ib = new ImageBrush(bitmap);
        this.Background = ib;
    }

然后由用户进行修改,当他们保存时,这就是图像的保存方式:

    public void SaveAsImage(string filename, Window parent)
    {
        Size size = new Size(this.ActualWidth, this.ActualHeight);
        Point point = this.TransformToAncestor(parent).Transform(new Point(0, 0));
        RenderTargetBitmap renderBitmap = new RenderTargetBitmap(
         (int)size.Width, (int)size.Height,
         96d, 96d, PixelFormats.Pbgra32);

        // needed otherwise the image output is black
        this.Measure(size);
        this.Arrange(new Rect(point, size));

        renderBitmap.Render(this);

        JpegBitmapEncoder encoder = new JpegBitmapEncoder();
        encoder.Frames.Add(BitmapFrame.Create(renderBitmap));

        using (FileStream file = File.Create(filename))
        {
            encoder.Save(file);
        }
    }

我想知道为什么画布或图像每次保存时都会移动,背景变黑。

正如你在评论中看到的那样(保存例程是从这里的另一篇文章中获取的)它使用了测量并安排了函数来阻止整个背景变黑,但是它并没有阻止我的图像移动/消失。

任何帮助/建议表示赞赏。

感谢。

0 个答案:

没有答案