【问题标题】:Selecting specific region from image从图像中选择特定区域
【发布时间】:2015-11-09 13:43:59
【问题描述】:

是否有任何用于 winform 或 wpf 的 .net 免费库可以提供控制以选择图像中的特定区域,然后我们可以将这些区域保存为不同的图像。如果我们可以在图像上使用鼠标绘制网格,然后将该网格另存为单独的图像,那就太好了。

【问题讨论】:

  • 你看过JCrop吗?
  • 它的窗体/wpf web 还是什么??必须指定。这实际上确实需要了解您到底想要什么
  • 我想要一个用于 Windows 应用程序的工具。它可以是 WPF 或 Winform 控件。它可以选择图像中的区域并可以保存该区域。该区域应该是可移动和可调整大小的,我们也可以绘制尽可能多的区域。有没有可能。

标签: c# .net image winforms pdftotext


【解决方案1】:

这不是很难。在 Winforms 中,这是一个最小的示例:

GraphicsPath GP = null;
List<Point> points = new List<Point>();

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
    points.Clear();
    points.Add(e.Location);
}

private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
    GP = new GraphicsPath();
    GP.AddClosedCurve(points.ToArray());
}

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
    if (e.Button == System.Windows.Forms.MouseButtons.Left)
    {
        points.Add(e.Location);
        pictureBox1.Invalidate();
    }
}

private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
    if (points.Count > 1)
        e.Graphics.DrawCurve(Pens.Orange, points.ToArray(), 0.5f);
}

private void cb_clearRegion_Click(object sender, EventArgs e)
{
    points.Clear();
    pictureBox1.Region = null;
}

private void cb_SaveRegion_Click(object sender, EventArgs e)
{
    Rectangle cr = pictureBox1.ClientRectangle;
    using (Bitmap bmp = new Bitmap(cr.Width, cr.Height))
    using (Graphics G = Graphics.FromImage(bmp))
    {
        G.SetClip(GP);
        G.DrawImage(pictureBox1.Image, Point.Empty);
        bmp.Save(@"D:\xyz.png", ImageFormat.Png);
    }
}

请注意,这不使用放大或缩小,而是创建与原始大小相同的位图,在区域外的任何地方都是透明的。

使用ScaleTransformPoint UnZoom(Point) 函数实现azoom 很简单;只是问你是否需要它..

如果要添加“移动”模式,可以使用MouseMove 并重新计算所有Points

如果您想要多个区域,则必须收集 List&lt;T&gt; 并连续使用它们来创建输出。

如果您真的只想保存网格而不保存图像,请使用 G.DrawPath(..) 而不是 DrawImage()

还请注意,您可能需要使用各种绘图工具(如线条、矩形等)来优化选择。您可以将图形逐步添加到路径中..

【讨论】:

    猜你喜欢
    • 2013-01-10
    • 2022-06-16
    • 2015-12-14
    • 2011-11-09
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    相关资源
    最近更新 更多