在 WPF 中绘制图像控件

Sia*_*sou 0 c# wpf

我必须创建应用程序,它可以加载一些图像,应用一些过滤器,画几条线并保存它。我必须使用 WPF 来完成。如何在 WPF 中绘制图像控件?或者其他控件更适合它?

Ora*_*oft 5

您可以通过将 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);             
    }
    
    Run Code Online (Sandbox Code Playgroud)

newImagePath是新文件的路径;inkImageCanvas是您的 InkCanvas 控件。

这会将inkCanval 的内容保存为jpg 文件。