不能发200分的帖子,有解决问题者,在开贴给100分。
c/s架构
求一个图片检测切割的例子:
得到的图片, 我想定位一个点(黑点或者字都可以,这个点我可以事先手工作好)取图片上面的两个小图
(每张图片的小图位置是不固定的,定位的点与小图位置关系是固定的),可以根据这个点把小图切割下来。
或者边缘检测,图片切割的例子。

解决方案 »

  1.   

    可以用GDI+截取
    先在Panel上把图像画出来,然后再设定MouseClick事件或者自己输入坐标,
    根据坐标围成的闭合曲线,把图像的那个区域的内存数据保存出来,然后再用MemoryStream创建一个新的图像,并保存成文件
    就可以实现你的东西了以前我还做过一个就是矢量跟踪的,那个需要你用鼠标去画,把点都保存成矩阵数据,就能取得一个完整边框数据
      

  2.   

    通过实现图片水印时,可切割
    参考
    http://blog.csdn.net/JoeBlackzqq/archive/2008/01/16/2047592.aspx
    http://blog.csdn.net/eversoutheast/archive/2008/02/25/2119994.aspx
    http://www.cnblogs.com/strinkbug/archive/2007/02/15/651212.html
      

  3.   

    可以用GDI+截取 
    先在Panel上把图像画出来,然后再设定MouseClick事件或者自己输入坐标, 
    根据坐标围成的闭合曲线,把图像的那个区域的内存数据保存出来,然后再用MemoryStream创建一个新的图像,并保存成文件 
    就可以实现你的东西了 以前我还做过一个就是矢量跟踪的,那个需要你用鼠标去画,把点都保存成矩阵数据,就能取得一个完整边框数据
    ----------------
    可用!
      

  4.   

    可以用GDI+截取 
    先在Panel上把图像画出来,然后再设定MouseClick事件或者自己输入坐标, 
    根据坐标围成的闭合曲线,把图像的那个区域的内存数据保存出来,然后再用MemoryStream创建一个新的图像,并保存成文件 
    就可以实现你的东西了 以前我还做过一个就是矢量跟踪的,那个需要你用鼠标去画,把点都保存成矩阵数据,就能取得一个完整边框数据 
      

  5.   

    需要使用Windows API
    HDC GetDC(
      HWND hWnd   // handle to window
    );
    COLORREF GetPixel(
      HDC hdc,    // handle to DC
      int nXPos,  // x-coordinate of pixel
      int nYPos   // y-coordinate of pixel
    );
    COLORREF SetPixel(
      HDC hdc,           // handle to DC
      int X,             // x-coordinate of pixel
      int Y,             // y-coordinate of pixel
      COLORREF crColor   // pixel color
    );先取出你鼠标选中区域的所有像素的颜色,然后重新画出来在保存一下!
      

  6.   

    GDI+可以遍历每一个像素的颜色。
    不太明白lz的问题描述。是用4个点连成一个框再截图吗?
      

  7.   

    以下代码的功能 :点鼠标左键在pictureBox1上截一块区域,截下来的会显示在pictureBox2上面
     private int _x, _y;
            Image _img = null;
            private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
            {
                _img = pictureBox1.Image.Clone() as Image;
                _x = e.X;
                _y = e.Y; 
            }        private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
            {
                int sx = _x < e.X ? _x : e.X;
                int sy = _y < e.Y ? _y : e.Y;
                int w = Math.Abs(_x - e.X);
                int h = Math.Abs(_y - e.Y);
                Graphics g = Graphics.FromHwnd(pictureBox2.Handle);
                g.Clear(pictureBox2.BackColor);
                g.DrawImage(pictureBox1.Image, new Rectangle(0, 0, w, h), sx, sy, w, h, GraphicsUnit.Pixel);         }        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Left)
                {
                    Pen p = new Pen(Color.Blue,1);
                    p.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
                    Graphics g = Graphics.FromHwnd(pictureBox1.Handle);
                    int sx = _x < e.X ? _x : e.X;
                    int sy = _y < e.Y ? _y : e.Y;
                    int w = Math.Abs(_x - e.X);
                    int h = Math.Abs(_y - e.Y);
                    pictureBox1.Image = _img;
                    g.DrawRectangle(p, sx, sy, w, h);
                }        }