鼠标事件、c#绘图

我继续昨天的思路,继续找如何响应鼠标事件和绘图方面的程序。

其实我对鼠标经过时button变色很感兴趣,但是网上说的一个MouseHover()方法我不知道如何应用。默认的只有对Click事件的响应,总不可能把click改成MouseHover就完事了吧(其实我也试过,不过要么出错、要么还是响应Click)。

我的第一步是让它先响应Click然后变色,毕竟我连变色语句也没学过。我在百度里找到了:button1.BackColor=Color.Red; 不过这还没解决关键问题,只是在Click时才能变色。

关于如何响应其他事件,我查了很久,不停地更换关键字后,终于在微软的Visual Studio介绍中找到了方法:选中button按一下闪电图标会出现其他event事件,双击可以进入其他事件的代码编辑。(注:功夫不负有心人,终于找到了,居然还是繁体网站,还好我是中国人,虽然也不太认得繁体,用Google翻译成了简体,翻得不好,凑合着看的)。可是Windows Mobile里没有MouseHover事件,我用KeyUp、KeyDown事件的变色意思一下,然后添了一个刷新按钮以免颜色回不过来。

关于绘图,我查到的最有用的解释是用DrawLine方法,和一个画圆的例子。这个例子里用到了DrawLine(myPen,x1,y1,x2,y2),我在程序查错功能的帮助下,把这个例子中的一些错误改正了,并且自己写了一个画一根线的程序(因为我一开始不知道x1,x2,y1,y2代表什么),我不停地改变坐标值,发现x1,y1表示起始点;x2,y2表示终止点。掌握了这点,画出由直线组成的图形就不难了。

然后我的目标是画一个圆。(注:其实我下的那个画圆的程序开始叫“画钻石”。作者太大言不惭了,居然把一个错误的画圆程序(也就是画出了到处都有洞的圆)叫做“画钻石”)由于例子名字不叫画圆,我也没有朝那方面想,又上网查了画圆程序,可是太难理解,看不懂。作为我唯一调试成功的绘图程序,我又看起了这个“画钻石”的程序。渐渐地,我看懂了这个程序,其实思路并不难,他让角度不断变化,并让x=cos(角度),y=sin(角度),那么既然是个画圆程序,到底错在哪里呢?

我找了半天,发现一个angle=2∏/const语句中,他设的常数为25。既然是角度2∏=360度啊!!!我改了这个值,果然画出了一个没有洞的圆。(还是谢谢这个程序了)

运行时遇到了一点小问题是:同一个Form上的其他控件没有显示,后来发现是绘制圆形的时间太长(X从0循环到360-1,Y也嵌套循环0到360-1,共执行了360*360次)。我的原则是,能看懂就是好程序,可能它执行速度(选用的方法)还不是最好,但对我初学来说还是不错的程序。

再附上3张程序执行后的图:

image image image

左图中,按下任意键(除了Enter)变颜色,更改textbox中的文字变颜色,按Refresh还原;中图中,画了一个叉和一个矩形;右图画了一个圆。

This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s