Я пытаюсь создать простое приложение для создания эскизов .
Но я столкнулся со странной проблемой.У меня есть Surface Pro 3, над которым я работаю, с разрешением 144, в соответствии с некоторыми настройками системы .
Когда я сохраняю изображение из своего приложения, используя 96 в качестве dpi, оно создает изображение, которое немного меньше.Что странно.
Есть ли способ, которым я могу либо: а) масштабировать холст / мазки, которые я сохраняю, либо сказать RenderTargetBitmap для правильного масштабирования?Если я просто вставлю 144, я получу правильный масштаб для обводки, но мой размер холста будет увеличен.
Мой код сохранения холста выглядит следующим образом:
public void saveCanvas(object sender, RoutedEventArgs e){
this.save_filename = this.save_filename ?? this.getSaveFilename();
if (save_filename != null){
var cantwo = new InkCanvas();
cantwo.Strokes.Clear();
cantwo.Strokes.Add(this.canvas.Strokes);
cantwo.Background = this.canvas.Background;
var size = new Size(this.canvas.ActualWidth, this.canvas.ActualHeight);
cantwo.Height = size.Height;
cantwo.Width = size.Width;
cantwo.Measure(size);
cantwo.Arrange(new Rect(size));
var transform = this.canvas.LayoutTransform;
var rtb = new RenderTargetBitmap((int)this.canvas.ActualWidth, (int)this.canvas.ActualHeight, dpiX, dpiY, PixelFormats.Default);
rtb.Render(cantwo);
try {
using(var fs = File.Open(this.save_filename, FileMode.Create)){
var encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(rtb));
encoder.Save(fs);
}
}
catch(IOException){
MessageBox.Show("Failed to save image", "ERROR: Save Failed");
}
// Restore transformation if there was one.
this.canvas.LayoutTransform = transform;
}
}
Как я могусохранить мое изображение в том же размере / разрешении / точек на дюйм, как мой холст?(Или нарисовать на холсте с тем же разрешением / масштабом, что и при сохранении изображения)?