при сохранении WPF InkCanvas к JPG - изображение становится обрезанным

Структура выделяет общий размер всех элементов в нем.

объединение А только выделяет столько памяти, сколько ее крупнейший участник требует.

5
задан Glorfindel 4 April 2019 в 19:59
поделиться

4 ответа

Ага! Проблема заключается в TextBlock txtLabel , который находится непосредственно над InkCanvas. Когда вы удалите эту черную линию, она исчезнет.

Что касается того, почему это происходит, я еще не совсем уверен.

3
ответ дан 18 December 2019 в 14:49
поделиться

Мой класс сохранил изображение

     using System;
     using System.IO;
     using System.Windows;
     using System.Windows.Controls;
     using System.Windows.Media;
     using System.Windows.Media.Imaging;

     public void ExportToJpeg(String path,  InkCanvas surface)
    {
        double
                x1 = surface.Margin.Left,
                x2 = surface.Margin.Top,
                x3 = surface.Margin.Right,
                x4 = surface.Margin.Bottom;

        if (path == null) return;

        surface.Margin = new Thickness(0, 0, 0, 0);

      Size size = new Size(surface.Width, surface.Height);
   surface.Measure(size);
   surface.Arrange(new Rect(size));

         RenderTargetBitmap renderBitmap =
          new RenderTargetBitmap(
            (int)size.Width,
            (int)size.Height,
            96,
            96,
            PixelFormats.Default);
      renderBitmap.Render(surface);
      using (FileStream fs = File.Open(path, FileMode.Create))
        {
         JpegBitmapEncoder encoder = new JpegBitmapEncoder();
            encoder.Frames.Add(BitmapFrame.Create(renderBitmap));
            encoder.Save(fs);
        }
      surface.Margin = new Thickness(x1, x2, x3, x4);
    }
3
ответ дан 18 December 2019 в 14:49
поделиться

and Поверхность. Маржа = новая Толщина(55,40,96,5); http://img519.imageshack.us/img519/7499/mynewimage.png

1
ответ дан 18 December 2019 в 14:49
поделиться

Джейсон, я решил эту проблему. Извини за мой английский. Я русский. Вам нужно установить свойство inkCanvas.Margin на 0,0,0. с:

surface.Margin = new Thickness(0, 0, 0, 0);

после сохранения установленного залога на вашей позиции.

пример: http://img189.imageshack.us/img189/7499/mynewimage.png

1
ответ дан 18 December 2019 в 14:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: