我想在屏幕上用鼠标任意画图,应怎样做?

解决方案 »

  1.   

    原理: 得到桌面的 dc,然后在这个dc上面画图。
      
    ————————————————————————————————————
    写作,虽然每个人都会查阅辞海,可,不是人人都能写出不朽的篇章的。编程,如是也。
      

  2.   

    也就是调用api Getdc(桌面句柄)
    然后 再画图  具体的你查查api了
      

  3.   

    给你个在桌上画圆的代码吧:
    [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
    public static extern IntPtr GetDesktopWindow();
    [DllImport("user32.dll", EntryPoint = "GetDCEx", CharSet = CharSet.Auto, ExactSpelling = true)]
    private static extern IntPtr GetDCEx(IntPtr hWnd, IntPtr hrgnClip, int flags);private void button1_Click(object sender, EventArgs e)
    {
    IntPtr desk = GetDesktopWindow();
    IntPtr deskDC = GetDCEx(desk, IntPtr.Zero, 0x403);
    Graphics g = Graphics.FromHdc(deskDC);
    g.FillEllipse(SystemBrushes.ControlText, 0, 0, 100, 100);
    }
      

  4.   

    这个就不好说了,要知道鼠标在桌上的移动,可能要用到全局的Hook,这个在.NET不支持的.要处理比较的麻烦的.
      

  5.   

    原理: 得到桌面的 dc,然后在这个dc上面画图。没有错是这样的,一般把座面的HBITMAP copy下来,其实就是做一个假的窗体,然后在这个窗体上画图.
    而这个窗体用的背景(图片)是座面的如果硬要在座面画,那么线获得它的hwnd,然后获得Hdc,这样也能话,但是座面就被弄乱了.....
      

  6.   

    如果做的不是太严格,可以参见这个:
     在计算机屏幕上画图 
    http://blog.csdn.net/hbxtlhx/archive/2004/12/06/206408.aspx