Рисуем на контроле изображения в WPF - PullRequest
0 голосов
/ 05 марта 2011

Я должен создать приложение, в котором можно загрузить какое-то изображение, применить несколько фильтров, нарисовать несколько линий и сохранить его. И я должен сделать это с помощью WPF. Как я могу рисовать на Image control в WPF? Или другой контроль лучше?

1 Ответ

4 голосов
/ 05 марта 2011

Вы можете сделать это, добавив InkCanvas на свою страницу, добавив свое изображение в качестве фонового изображения InkCanvas и добавив функцию сохранения.

  1. Добавьте InkCanvas к форме WPF:
    1. Откройте панель инструментов (в меню «Вид» выберите «Панель инструментов»)
    2. Щелкните правой кнопкой мыши панель инструментов и выберите «Выбрать элементы» (откроется диалоговое окно «Выбор элементов панели инструментов»)
    3. На вкладке «Компоненты WPF»Выберите диалоговое окно «Элементы панели инструментов», прокрутите вниз до InkCanvas и выберите его, чтобы флажок отображался в этом поле.
    4. Нажмите кнопку ОК, чтобы добавить элемент управления InkCanvas в панель инструментов.
    5. Перетащите элемент управления InkCanvasот панели инструментов до поверхности дизайна.
  2. Добавьте свое изображение в качестве фона InkCanvas.Это можно сделать либо в окне свойств в разделе «Фон», либо в XAML
  3. Добавить кнопку «Сохранить» в форму и использовать следующий код для ее сохранения:

    string newImagePath = "your file path";
    var ms = new MemoryStream();             
    
    using (FileStream fs = new FileStream(newImagePath , FileMode.Create)
    {
        var rtb = new RenderTargetBitmap((int)inkImageCanvas.Width, (int)inkImageCanvas.Height, 96d, 96d, PixelFormats.Default);             
        rtb.Render(inkImageCanvas);             
        JpegBitmapEncoder encoder = new JpegBitmapEncoder();             
        encoder.Frames.Add(BitmapFrame.Create(rtb));              
        encoder.Save(fs);             
    }
    

newImagePath - путь к новому файлу;inkImageCanvas - это ваш элемент управления InkCanvas.

Это сохранит содержимое вашего inkCanval в файл jpg.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...