在 form上可以实现,在panel实现不了,为什么啊?

苦茶爷爷 2013-10-04 01:51:18
通过大家的帮助,我已经能够实现图形随着鼠标绘制。
但是问题又来了:
public partial class Form2 : Form
{
Point Form2_MouseMove;

public Form2()
{
InitializeComponent();
}

private void Form2_Paint(object sender, PaintEventArgs e)
{
Graphics dc = e.Graphics;
Pen blue = new Pen(Color.Blue, 3);
dc.DrawRectangle(blue, Form2_MouseMove.X, Form2_MouseMove.Y, 50, 50);
}

private void Form2_MouseMove_1(object sender, MouseEventArgs e)
{
Form2_MouseMove.X = e.X;
Form2_MouseMove.Y = e.Y;
this.Text = string.Format("鼠标位置:({0},{1})", Form2_MouseMove.X, Form2_MouseMove.Y);
this.Invalidate();
}



以上可以实现。
以下不能实现:
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);
this.Invalidate();
}


}


是不是panel需要新的坐标体系和新的绘制方法?

谢谢!!
...全文
154 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
苦茶爷爷 2013-10-04
  • 打赏
  • 举报
回复
引用 14 楼 hwenycocodq520 的回复:
看下我9楼发的链接,体会下别人的实现思路,再整理你现在的实现思路!设计了再写代码,你现在写这个是很难完成你需求的
谢谢!!!
智商余额不足 2013-10-04
  • 打赏
  • 举报
回复
看下我9楼发的链接,体会下别人的实现思路,再整理你现在的实现思路!设计了再写代码,你现在写这个是很难完成你需求的
智商余额不足 2013-10-04
  • 打赏
  • 举报
回复
看下我9楼发的链接,体会先别人的实现思路,在整理你现在的程序!设计了再写代码
苦茶爷爷 2013-10-04
  • 打赏
  • 举报
回复
引用 11 楼 hwenycocodq520 的回复:
[quote=引用 10 楼 u011311854 的回复:] [quote=引用 8 楼 hwenycocodq520 的回复:] 这样你还有把这些图形抽象成一个个图形对象哦,这样才能集中管理和编辑它们的属性
谢谢,加个关注吧,我写信给你行不?[/quote] hwenycocodq520@163.com[/quote]
 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作为布尔型变量设置为一个开关,这样行不?
智商余额不足 2013-10-04
  • 打赏
  • 举报
回复
引用 10 楼 u011311854 的回复:
[quote=引用 8 楼 hwenycocodq520 的回复:] 这样你还有把这些图形抽象成一个个图形对象哦,这样才能集中管理和编辑它们的属性
谢谢,加个关注吧,我写信给你行不?[/quote] hwenycocodq520@163.com
苦茶爷爷 2013-10-04
  • 打赏
  • 举报
回复
引用 8 楼 hwenycocodq520 的回复:
这样你还有把这些图形抽象成一个个图形对象哦,这样才能集中管理和编辑它们的属性
谢谢,加个关注吧,我写信给你行不?
智商余额不足 2013-10-04
  • 打赏
  • 举报
回复
给一个链接你去研究下吧,外国人写的,你应该想要实现这样的!不过要gdi+熟悉才行 http://www.codeproject.com/Articles/8494/DrawTools
智商余额不足 2013-10-04
  • 打赏
  • 举报
回复
这样你还有把这些图形抽象成一个个图形对象哦,这样才能集中管理和编辑它们的属性
苦茶爷爷 2013-10-04
  • 打赏
  • 举报
回复
引用 6 楼 hwenycocodq520 的回复:
引用 5 楼 u011311854 的回复:
[quote=引用 4 楼 hwenycocodq520 的回复:] 是啊....
我想要鼠标抬起时,绘制在panel上。鼠标在移动也不消失,咋办哈?
描述详细点啊,你想要在指定位置绘制矩形还是什么?就像画图工具里面的[/quote] 我想实现像visio一样 左边有一些图标,左键点击拖动。 到右边的panel里面绘制。 我的思路是这样的。选中左边的,鼠标指针就变成图形的形状了。 然后右边的panel里面鼠标一放,就绘图了。 然后这个图还可以编辑颜色,大小等等。 目前正在分段实验。。。
智商余额不足 2013-10-04
  • 打赏
  • 举报
回复
引用 5 楼 u011311854 的回复:
引用 4 楼 hwenycocodq520 的回复:
是啊....
我想要鼠标抬起时,绘制在panel上。鼠标在移动也不消失,咋办哈?
描述详细点啊,你想要在指定位置绘制矩形还是什么?就像画图工具里面的
苦茶爷爷 2013-10-04
  • 打赏
  • 举报
回复
引用 4 楼 hwenycocodq520 的回复:
是啊....
我想要鼠标抬起时,绘制在panel上。鼠标在移动也不消失,咋办哈?
智商余额不足 2013-10-04
  • 打赏
  • 举报
回复
是啊....
苦茶爷爷 2013-10-04
  • 打赏
  • 举报
回复
引用 2 楼 hwenycocodq520 的回复:
应使panel无效(Invalidate())而不是窗体form
谢谢,this表示form,对不?
智商余额不足 2013-10-04
  • 打赏
  • 举报
回复
应使panel无效(Invalidate())而不是窗体form
智商余额不足 2013-10-04
  • 打赏
  • 举报
回复

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();
        }
 
   
    }

111,110

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧