C#/WPF-加载图像,在其上自由绘制,保存图像
我正在创建一个图像分割程序,它的一小部分是能够加载一个图像,用钢笔工具画出来,然后保存它 目前,我的程序可以加载图像并在WPF中的图像对象中显示它 我试着添加一些鼠标事件,就像这样C#/WPF-加载图像,在其上自由绘制,保存图像,c#,wpf,image,mouseevent,draw,C#,Wpf,Image,Mouseevent,Draw,我正在创建一个图像分割程序,它的一小部分是能够加载一个图像,用钢笔工具画出来,然后保存它 目前,我的程序可以加载图像并在WPF中的图像对象中显示它 我试着添加一些鼠标事件,就像这样 Graphics g; Pen pen = new System.Drawing.Pen(Color.Red, 1); bool drawing = false; System.Windows.Point previousPoint; private void mainIma
Graphics g;
Pen pen = new System.Drawing.Pen(Color.Red, 1);
bool drawing = false;
System.Windows.Point previousPoint;
private void mainImage_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
drawing = true;
previousPoint = e.GetPosition(mainImage);
}
private void mainImage_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
drawing = false;
}
private void mainImage_MouseMove(object sender, MouseEventArgs e)
{
if (!drawing) { return; }
if (e.GetPosition(mainImage).Equals(previousPoint)) { return; };
g.DrawLine(pen, (float)e.GetPosition(mainImage).X, (float)e.GetPosition(mainImage).Y, (float)previousPoint.X,
(float)previousPoint.Y);
}
这里的问题是图形没有初始化,我不知道如何对图像对象进行初始化,或者这是否可能
我是想在这里重新发明轮子吗?这似乎是一个很小的问题,但我找不到我要找的东西。另一种我认为可行的方法是使用墨水画布并将图像加载到其中,但我也找不到这样做的方法
提前感谢。您可能会发现直接通过WPF对象,特别是通过
画布,而不是尝试使用图形
对象并通过GDI进行渲染要容易得多:
基本上,您可以将图像渲染为画布的背景,然后按照上面的链接进行渲染和保存
ImageBrush brush = new ImageBrush();
brush.ImageSource = new BitmapImage(new Uri(@"image.png", UriKind.Relative));
canvas.Background = brush;