[音乐]
同学们好,今天我们讲一个例题: 鼠标事件的响应。
这个例题的主要内容是: 通过对一系列鼠标事件的响应,模拟出一个可以在窗体上
简单涂鸦的程序。
我们现在来到开发环境下,
新建一个工程,命名为 mouse。
先讲一下我们打算做一个什么东西,
呃因为我们刚学过了鼠标事件,我们想利用一下鼠标事件 做一个程序。
呃当然鼠标,大家想想鼠标是比较灵活的,在窗体上涂来抹去, 是非常方便的,因此我们就想做一个画图程序。
但是由于 我们具体画图的一些命令、 一些函数我们还没有学到, 所以说我们在这个例题中决定是只是一个模拟的画图。
怎么个模拟法呢?我们用这个 Label 控件来模拟。
大家看一看啊,我把 Label 控件拖放在这儿。
我们原来是把 Label 控件输入一个,
输入一些字符,用来提示用户信息,相应信息的,但是我们现在把这个 Label
控件模拟成为一个 呃,一个条儿啊,咱们看看,一个颜色条儿。
什么叫颜色条儿呢?咱们给 Label 控件的,它的 BackColor
这个属性设定一个颜色,比方说设定一个比较鲜艳的,比方说设定红的, 不就成这样子了嘛。
然后咱们还可以给这个 把它的这个 Text
设成一串空格,如果完全设置为空是不行的。
完全设置为空的话,完全设置为空的话就这么短一点儿了,咱们把它设计长一点儿,比方说设- 成五个空格长吧,
大家看这样,就形成一个色条儿了, 对吧。
这样我们就回避了如何画图这样的一些学习过程, 啊我们就用这样的色条在这个窗体上进行绘来绘去。
那当然这就涉及一个如何动态地生成 控件的一些相应的语句,一会儿我们就会学习。
但是我们如果 是简单的光画这些色条儿,太简单啊,我们为了让这个程序做得更好看一点,
我们最好在这儿再做一个调色板,可以选颜色,对吧。
好,咱们现在就开始 制作这个程序。
首先,呃我们为了让
用户能看到鼠标的位置,鼠标的相对坐标,咱们先做一个鼠标坐标的显示的一个
地方啊。
把它写一个 是鼠标 位置,对吧。
然后再拖两个 TextBox 啊,用来显示鼠标的位置。
好了,怎么显示鼠标的位置呢? 当然就要响应项的鼠标事件啦,对吧。
咱们点击这个窗体本身, 找相应的事件。
如果想要能随时 在这两个窗口上,在这两个 TextBox
上显示鼠标的位置,当然响应的事件要是这个事件了: MouseMove 事件。
当鼠标指针移过iii上,当然它一移动我们就知道
啊它的坐标变了,咱们修改一下它的代码:就是
TextBox 1.
text 等于,还记得鼠标事件这个参数吧? 它里面就有鼠标的位置啊,e.
X。
当然这是一个数字类型, 所以说我们得改成字符串才能赋值,然后类似的
我们把 Y 再复制过去就可以了,复制一下, 2 然后这边改成 Y。
好,那么现在试运行一下看能不能成功啊。
大家看到没有,鼠标的位置就 动态地显示在这两个坐标上,呃这两个位置上了。
但是大家有没有发现我,鼠标当在这个窗体上运动的时候它就不变了, 只有挪,挪开这个,这三个东西,挪开控件才会变。
那是当然的,因为我们想用的 事件是这个窗体的
MouseMove 事件,我一旦鼠标放到这个控件上面,它就
这个,鼠标事件就不再发送到这个窗体,发送到这两个控件上了,所以它就不变了,对。
好了这现在我们把位置已经 确定了,现在就要做调色板啊。
咱们为了让这个调色板看起来更舒服一点,我们使用这个 Panel,
容器嘛,有个容器是 Panel。
对用它,因为它显得是比较 规整一些,拿它当调色板。
咱们把它先弄小一点, 把它弄小一点,弄成比较方形的,像一个调色板的样子啊。
而且呢它默认是没有边框的,咱们为了看起来更清楚一点给它加上边框, 对吧。
呃最后呢如果我们要重复再拖进来一个,再拖进来一个,要重复设置属性比较麻烦,
所以说我们复制粘贴一下。
把它在这儿复制,再粘贴,再
粘贴,因为我们要用三个颜色吧,红黄蓝三个颜色就可以了, 用在这儿。
好了, 咱们分别给它们设成颜色。
怎么设呢,当然还是 Back、 BackColor 这个属性了。
给它设成第一个 设成红颜色,第二个设成黄颜色,
第三个设成蓝颜色。
好了这是我们的调色板。
但是我们还需要一个框,是显示什么呢,显示当前颜色。
我们当前这个鼠标,这个底是什么颜色,对吧。
所以说咱们再拖一个 Panel,放在这一块儿啊,这块儿
显示,把它弄小一点,这块儿显示当前我这个笔的颜色。
把它也把边框给加上,
给它加上边框。
但是当前这个笔的颜色怎么确定呢?当然我们可以 响应这个,这三个
Panel 的 click 事件,但是由于我们这节,这个例题不是 有关鼠标的事件响应啊,所以说咱们就不响应它
click 事件,换一个事件, 响应它的 MouseHover 事件。
当鼠标在控件里边儿静止状态下待一段时间内发生,咱们试一试这个 啊。
当 第一个,当,看到没,第一个是是红颜色,
咱们就把这个,这个是 Panel 4 啊,Panel 4 的颜色赋给它就行了啊。
我们试一试啊, Panel 4.
BackColor = Panel 1.
BackColor, 对吧。
然后剩下的两个调色板是以此类推, 咱们都响应它的
MouseHover 事件,咱们一块儿都把它加上去, 这样代码比较好写一些。
然后把相应的代码就拷贝一下, 这儿要记得改成是
Panel 2 的,这儿是 Panel 3 的。
好,咱们再测试一下现在的程序。
它需要停一下,稍微 其实大概就停个零点几秒,它颜色就会变化了,这样就感到,起到一个我们相当于我们这个鼠-
标是一个笔呀 蘸一下,蘸一下墨汁的感觉,对吧。
好了,现在咱们就要做 最终一步了,就是如何我鼠标在这个窗体上点击
能把那么画迹给画出来,能把这个痕迹给画出来。
[无声]
咱们既然要能画出来,响应的什么事件呢?当然是这个窗体的
MouseClick 事件。
响应它这个事件呢 我只要在这个窗体上点击一下,
我就在这个窗体点击这个位置,自动生成一个新的,啊 新的
Label 控件,并且把 Label 控件的颜色赋,赋成我当前这个画笔的颜色啊,就是这个过程啊。
咱们编码,先 new 出一个 Label
出来, 设成 la 吧,等于
Label la =
new Label。
先把它 new 出来了,然后给它赋一些初值。
首先最重要的,因为我们鼠标不是要点哪儿画哪儿吗, 就要先把它的
Location 确定了,等于,因为这个
Location 是一个 呃,Point,Point
那个类 的 Point 对象,所以说咱们得 new 出来一个 Point。
然后把 e.
X 和 e.Y 赋给它,这样我们鼠标当前位置 就确定了。
下一个我们要赋给它的这个 Label 控件,Label 控件的 Text,
因为我们刚才不是试过五个空格儿吗,咱们在这儿也一样,也用五个空格儿,一二三四 五。
还有个就是画笔的颜色,咱们得把这个颜色画出来嘛,对吧。
然后我们的颜色是 BackColor =,因为 Panel,当前 Panel
4 是什么颜色,我们就 用什么颜色,对吧,.BackColor。
再下一步, 非常重要,因为如果你就这样做的话,我只是把这个
控件降下来,但是没有把这控件的位置,把控件放在窗体上,所以说还要再
加一步是把控件放到这个窗体,位置就是我们当前窗体 .Control,
然后 .ADD,把这个 la 这个 Label 加上去,这样才能生效。
好,咱们现在测试一下我们现在这个程序。
先选取颜色,比方说选红色, 点一下。
大家看到没有?我涂鸦程序涂出来啦。
再点个黄的, 我可以多点几下,只要我没有换这个颜色,一直是黄颜色。
再点蓝的, 再点红的,再点蓝的,
看到没有?我们的这个涂鸦程序就这样编写完成啦。
今天我们就通过一系列的鼠标事件的利用,成功编写成了这一个简单的
涂鸦程序,谢谢大家。
[空白_录音]