Итак, у меня есть код для сохранения изображения, которое я редактировал, например, с помощью теневой тени, и после того, как я сохраню, я узнаю, что код сохраняет файл только с размером изображения. Что мне нужно, так это сохранить с новым размером с эффектом (изображение должно быть больше по размеру из-за тени под ним, например). Я не знаю, как отредактировать код для сохранения большего изображения. Если изображение статично больше, на самом деле это не проблема. Я не возражаю, если он сохраняет размер изображения + 20 пикселей на каждый размер, например.WPF Save Photo Effect
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;
}
Я изменил его, но все же это не решило мою проблему ... я не знаю, почему это было бы – xDevil