根据鼠标的移动获得起始点和终结点,用这两点画矩形,我用hook获得了鼠标down和up,但是不知道如何画线,请高手指点!

解决方案 »

  1.   

    在Form命名空间下有一个静态类可以直接在屏幕上面绘制~~~
    自己找找~~~好像叫什么ControlsDraw的~~记不得了~
      

  2.   

     //画直线---画:Pen    画的类型:Draw            Point p1=new Point(10,100);//X坐标   Y坐标
               Point p2=new Point(500,100);            Pen ps = new Pen(Color.Blue, 3);//钢笔类:线条--------线条的颜色+粗细            Graphics gh = this.CreateGraphics();//创建一个画布            gh.DrawLine(ps, p1, p2);//画               画矩形            Pen ps = new Pen(Color.Brown, 1);
                Graphics gh = this.CreateGraphics();
                gh.DrawRectangle(ps, 30, 20, 600, 200);
      

  3.   

    p1 = PointToScreen(new Point()); 
    p2 = PointToScreen(new Point()); 
    ControlPaint.DrawReversibleLine(p1, p2, Color.Red); 
    提示你画直线的办法:
    p1 p2首先要转成屏幕坐标,然后用ControlPaint.DrawReversibleLine()函数就行了
      

  4.   


    //先声明两个API
    [DllImport("user32")]
    static extern IntPtr GetDesktopWindow();[DllImport("user32")]
    static extern IntPtr FindWindowEx(IntPtr hwndParent,IntPtr hwndChildAfter,string lpszClass,string lpszWindow);//获取桌面窗口的hwnd
    IntPtr p1 = FindWindowEx(GetDesktopWindow(), (IntPtr)null, "Progman", null);
    IntPtr p2 = FindWindowEx(p1, (IntPtr)null, "SHELLDLL_DefView", null);
    IntPtr desktopHwnd = FindWindowEx(p2, (IntPtr)null, "SysListView32", null);
    //从desktopHwnd创建Graphics
    Graphics g = Graphics.FromHwnd( desktopHwnd);//然后就可以在 g上画图了
    g.DrawRectangle( Pens.Red,0,0,400,400);
    g.FillRectangle(Brushes.Blue,100,100,500,500);//用完别忘记释放
    g.Dispose();
      

  5.   

    TO:crossrowman
    在桌面上此方法没有问题,但是在其他窗体上,此方法就不行了!
      

  6.   

    直接用API比较好,配合SETCAPTURE和RELEASECAPTURE
      

  7.   

    WAKU :
    能不能说详细点呀