【发布时间】:2014-01-22 02:58:18
【问题描述】:
所以我有代码来保存我用投影编辑的图像,在我保存后我发现代码只保存图像大小的文件。我需要的是要么用新的保存具有效果的尺寸(例如,由于其下方的阴影,图像的尺寸应该变大)。 我不知道如何编辑代码以保存更大的图像。如果图像静态更大,那真的没问题,我不介意它是否保存图像的大小 + 每种大小的 20 像素。
try
{
Microsoft.Win32.SaveFileDialog saveDialog = new Microsoft.Win32.SaveFileDialog();
saveDialog.Filter = "JPeg Image(*.JPG)|*.jpg|Bitmap Image(*.BMP)|*.bmp|Png Image(*.PNG)|*.png|Gif Image(*.GIF)|*.gif";
if (saveDialog.ShowDialog().Value == true)
{
// Save current canvas transform
Transform transform = image1.LayoutTransform;
// reset current transform (in case it is scaled or rotated)
image1.LayoutTransform = null;
// Get the size of canvas
Size size = new Size(image1.ActualWidth, image1.ActualHeight);
// Measure and arrange the surface
// VERY IMPORTANT
image1.Measure(size);
image1.Arrange(new Rect(size));
// Create a render bitmap and push the surface to it
RenderTargetBitmap renderBitmap =
new RenderTargetBitmap(
(int)size.Width,
(int)size.Height,
96d,
96d,
PixelFormats.Default);
renderBitmap.Render(image1);
BitmapEncoder encoder = new BmpBitmapEncoder();
string extension = saveDialog.FileName.Substring(saveDialog.FileName.LastIndexOf('.'));
switch (extension.ToLower())
{
case ".jpg":
encoder = new JpegBitmapEncoder();
break;
case ".bmp":
encoder = new BmpBitmapEncoder();
break;
case ".gif":
encoder = new GifBitmapEncoder();
break;
case ".png":
encoder = new PngBitmapEncoder();
break;
}
// push the rendered bitmap to it
encoder.Frames.Add(BitmapFrame.Create(renderBitmap));
// Create a file stream for saving image
using (System.IO.FileStream fs = System.IO.File.Open(saveDialog.FileName, System.IO.FileMode.OpenOrCreate))
{
encoder.Save(fs);
}
// Restore previously saved layout
image1.LayoutTransform = transform;
}
}
catch (Exception)
{
throw;
}
【问题讨论】: