在 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需要新的坐标体系和新的绘制方法?

谢谢!!
...全文
119 15 打赏 收藏 转发到动态 举报
写回复
用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();
        }
 
   
    }
(题外话:从本次开始 我新增了jQuery EasyUI的专题页面 大家可以关注我的专题页来及时获取最新的EasyUI资源 专题页地址如下http:http://download.csdn.net/album/detail/343 同时也希望转载的那些朋友能保留我资源的说明及出处地址 我花那么多精力制作出来的 你们鼠标点两下就给我转走了还不注明出处 实在是不厚道 本来就是本着分享精神的 为的就是聚集一点人气和提供一个优良的环境来一起学习进步的 请不要抹杀掉我的热情 谢谢 )   时隔4个月之久 EasyUI终于迎来大版本更新了 本次更新内容诸多 除了常规维护外 还新增了3个新组件 都很实用 详细的可以阅读更新说明 里面给了详细的解读 另外 从该版本开始我将会逐步的将EasyUI官方以及第三方较好的插件API整合到API文档当中 并且会对这些插件做一些简单的Demo实现 存放到配套提供的程序包demo文件夹下 以便大家学习和使用 本期文档中将官方提供的所有附加插件的API都整理并存放到Extension节点下了 这些扩展的demo在附带的程序包中已经提供 可以用于参考使用 jQuery EasyUI 1 4版本更新内容: Bug(修复) menu:修复在删除一个菜单项的时候该菜单无法正确自适应高度的问题; datagrid:修复在datagrid宽度太小的时候“fitColumns”方法无法正常工作的问题 Improvement(改进) EasyUI的所有组件已经支持非固定 百分比大小的尺寸设置; menu:添加“showItem” “hideItem”和“resize”方法; menu:基于窗体大小自动调整高度; menu:添加“duration”属性 该属性允许用户自定义隐藏菜单动画的持续时间 以毫秒为单位; validatebox:添加“onBeforeValidate”和“onValidate”事件; combo:从该版本开始combo组件扩展自textbox组件(textbox是1 4中新增的组件); combo:添加“panelMinWidth” “panelMaxWidth” “panelMinHeight”和“panelMaxHeight”属性; searchbox:从该版本开始searchbox组件扩展自textbox组件(textbox是1 4中新增的组件); tree:添加“getRoot”方法 用于返回通过“nodeEl”参数指定的节点的顶部父节点元素 注意:官网的英文API中该函数的说明有误 其说明是none 无参数 实际这里是需要参数的 ; tree:添加“queryParams”属性; datetimebox:添加“spinnerWidth”属性; panel:添加“doLayout”方法 用于控制面板内组件的大小; panel:添加“clear”方法 用于清除面板内的内容; datagrid:允许用户设置百分比宽度的列(该功能真是千呼万唤始出来啊 ); form:添加“ajax” “novalidate”和“queryParams”属性; linkbutton:添加“resize”方法 New Plugin(新组件) textbox:该组件是一个增强的输入字段 它可以让用户非常简单的构建一个表单; datetimespinner:该组件是一个日期和时间的微调组件 它允许我们选择一个特定的日期或时间; filebox:filebox 该组件表单元素中用于上传文件的文件框工具组件 ">(题外话:从本次开始 我新增了jQuery EasyUI的专题页面 大家可以关注我的专题页来及时获取

110,535

社区成员

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

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

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