public partial class Form1 : Form
    {
        Point pt;
 
        public Form1()
        {
            InitializeComponent();
             
        }
 
        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            Graphics dc = e.Graphics;
            Pen blue = new Pen(Color.Blue, 3);
            dc.DrawRectangle(blue, pt.X, pt.Y, 50, 50);  
        }
 
        private void panel1_MouseMove(object sender, MouseEventArgs e)
        {
            pt.X = e.X;
            pt.Y = e.Y;
            this.Text = string.Format("鼠标位置:({0},{1})", pt.X, pt.Y);
            panel1.Invalidate();
        }
 
   
    }

解决方案 »

  1.   

    应使panel无效(Invalidate())而不是窗体form 
      

  2.   

    我想要鼠标抬起时,绘制在panel上。鼠标在移动也不消失,咋办哈?
      

  3.   

    描述详细点啊,你想要在指定位置绘制矩形还是什么?就像画图工具里面的
    我想实现像visio一样
    左边有一些图标,左键点击拖动。
    到右边的panel里面绘制。我的思路是这样的。选中左边的,鼠标指针就变成图形的形状了。
    然后右边的panel里面鼠标一放,就绘图了。
    然后这个图还可以编辑颜色,大小等等。
    目前正在分段实验
      

  4.   

    给一个链接你去研究下吧,外国人写的,你应该想要实现这样的!不过要gdi+熟悉才行http://www.codeproject.com/Articles/8494/DrawTools
      

  5.   

    谢谢,加个关注吧,我写信给你行不?
    [email protected]
      

  6.   

    谢谢,加个关注吧,我写信给你行不?
    [email protected] public partial class Form1 : Form
        {
           Point pt;
           public bool a ;        public Form1()
            {
                InitializeComponent();
                
            }        private void panel1_Paint(object sender, PaintEventArgs e)
            {
              if (a==true)
              {
               Graphics dc = e.Graphics;
               Pen blue = new Pen(Color.Blue, 3);
               dc.DrawRectangle(blue, pt.X, pt.Y, 50, 50);
               
              }          a = false;
               
            }        private void panel1_MouseMove(object sender, MouseEventArgs e)
            {
                a = false;
                pt.X = e.X;
                pt.Y = e.Y;
                this.Text = string.Format("鼠标位置:({0},{1})", pt.X, pt.Y);        }        private void panel1_MouseDown(object sender, MouseEventArgs e)
            {
                a = true;
               
            }        private void panel1_MouseUp(object sender, MouseEventArgs e)
            {
                a = true;
            }鼠标抬起就绘图,但是实现不了。
    a作为布尔型变量设置为一个开关,这样行不?