我的问题是,在从画布中保存后,我正在创建图像顶部黑色区域增大的图像。
每次保存图像时,顶部的黑色区域会增大,图像底部的部分会消失。
创建图像时,它将作为画布的背景加载:
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);
}
}
我想知道为什么画布或图像每次保存时都会移动,背景变黑。
正如你在评论中看到的那样(保存例程是从这里的另一篇文章中获取的)它使用了测量并安排了函数来阻止整个背景变黑,但是它并没有阻止我的图像移动/消失。
任何帮助/建议表示赞赏。
感谢。