我是做图像的,作切割的时候需要在原图上用矩形框出一个范围,之后对框出的范围进行处理.
而我的图像是显示在PictureBox上的,
我现在遇到的问题就是如何在原图像也就是PictureBox上面画出矩形?
在Form上能够画出来,但是在控件上我实现不了.
希望有人能够帮我一下啊,谢谢了!

解决方案 »

  1.   

    你是不是没有得到picturebox的graphics对象?
    Graphics g = Graphics.FromHwnd(pictureBox.Handle).
    g.drawRectangle(.....)
      

  2.   

    谢谢combread啊,但是我那么改了以后
    画出的矩形把我原图象给覆盖了啊
    在mouseup之后,picturebox里就剩下矩形了,原图象没有了啊.
    怎么能在我原图象上画呢?
      

  3.   

    背景已经解决了,
    现在的问题又是:
    在背景上画矩形的时候,那个矩形不随着鼠标而放大,
    只有当鼠标停止的时候,
    那个矩形才显示,怎么能修改一下啊?
    Invalidate();么?
      

  4.   

    你需要记住所画的对象,然后在picturebox的Paint事件中,去画相应的对象
      

  5.   

    不是,你要在mousemove事件中做处理
      

  6.   

    即要处理三个鼠标事件
    mousedown
    mousemove
    mouseup
      

  7.   

    我是有那三个鼠标事件了啊,
    private void pictureBox1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    Point p = new Point(e.X, e.Y);
    x= p.X;
    y = p.Y;
    cx = x - x0;
    cy = y - y0;
    if (drag)
    {
    Invalidate();
    }

    }
      

  8.   

    你的mousemove事件中有没有进行画矩形的操作
      

  9.   

    要在mousemove事件中,删除原先画的矩形,再画现在状况下的矩形
      

  10.   

    this.pictureBox1.Image = new Bitmap(100,100);
    Graphics g = Graphics.FromImage(this.pictureBox1.Image);
      

  11.   

    http://www.codeproject.com/cs/miscctrl/ClickAndDragPictureBox.asp
    看看这个
      

  12.   

    在 pictureBox1_Paint事件里华举行画矩形不就好了么?
    不一定非要在MouseMove里吧?
    private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
    {
    Graphics g = e.Graphics;
    Pen pen = new Pen(Color.Blue);
    if (drag)
    {

    g.DrawRectangle(pen, x0, y0, cx, cy);

    } pen.Dispose();

    }
      

  13.   

    在paint事件中画图形
    在鼠标移动事件中调用pictureBox1.ReFrush();