实例介绍
【实例简介】
【实例截图】
【核心代码】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 | public partial class Form1 : Form { public int [,] ballarray = new int [30, 30]; //定义整的二维数组 数组名称为 ballarry,行和列分别为30 public string [] colours = new string [30]; //定义一个string类型的数组clours ,长度为30 public int g1 = 1; //分别定义两个整型变量g1,g2,并赋初值,1,200分别是指用于跟随鼠标的图形的开始坐标位置 public int g2 = 200; public Bitmap bmp; //定义了个Bitmap( Bitmap是位图,所谓位图,是指点陈图,由像素组成)对象bmp,因为在程序中 //需要产生图像。只是创建一个空的对象,在下面会对其进行赋值,即实例化。 /*以上变量是全局变量,在整个程序中都可使用。*/ /// <summary> /// 对窗体初始化 /// </summary> public Form1() { InitializeComponent(); /*给colours数组赋值,这里的值是各种颜色,因为我们要产生种颜色的图像,所以每个数组元素,是表示了一种颜色*/ colours[1] = "Red" ; colours[2] = "Blue" ; colours[3] = "Black" ; colours[4] = "Yellow" ; colours[5] = "Crimson" ; colours[6] = "Gold" ; colours[7] = "Green" ; colours[8] = "Magenta" ; colours[9] = "Aquamarine" ; colours[10] = "Brown" ; colours[11] = "Red" ; colours[12] = "DarkBlue" ; colours[13] = "Brown" ; colours[14] = "Red" ; colours[15] = "DarkBlue" ; colours[16] = "Brown" ; colours[17] = "Magenta" ; colours[18] = "Green" ; colours[19] = "Yellow" ; colours[20] = "Black" ; } /// <summary> /// 运动开始按钮的事件代码 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Animatstart_Click( object sender, EventArgs e) { Random r = new Random(); //Random随机类,用于产生随机数,创建一个随机数对象r for ( int i = 1; i <= 20; i ) //产生20个随机数,存于数组中,作用是用于确定图形在运动前的坐标位置,这里有20个坐标。 { //例如ballarrary[i,1]和ballarray[i,2] 就是一对坐标即球的中心位置 ballarray[i, 1] = r.Next(10) 1; ballarray[i, 2] = r.Next(10) 1; ballarray[i, 3] = r.Next(10) 1; ballarray[i, 4] = r.Next(10) 1; } timer1.Start(); //用timer1来控制运动的开始,就好象是计时开始,具体的运动是在timer1_Tick事件中进行的 } /// <summary> /// 运动停止按钮事件代码 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Animatstop_Click( object sender, EventArgs e) { timer1.Stop(); //用timer1来控制运动的停止,就好象是计时结束 } /// <summary> /// 绘制椭园图形 /// </summary> /// <param name="e"></param> protected override void OnPaint(PaintEventArgs e) { bmp = new Bitmap(ClientSize.Width, ClientSize.Height, e.Graphics); // 实例化一个Bitmap对象 bmp(bmp在前面已定义),同时指定绘图的区域大小,在这里是ClientSize.Width,ClientSize.Height是指窗体的大小 Graphics bmpGraphics = Graphics.FromImage(bmp); //封装对象bmp,创建新的绘图区域bmpGraphics for ( int i = 1; i <= 20; i ) //循环20次,绘制20个椭圆 { //.DrawEllipse()是绘制椭圆的方法 ,格式为:对象名.DrawEllipse(pen,int x,int y,int width,int height) ,Pen 是钢笔,x,y 是指一对坐标,width,height 是指图形的高度和宽度 //,new Pen(color.FromName(colors[i]),1) 是指用钢笔用colours数组中指定的颜色和指定的线条宽度1来绘制椭圆 //ballarray[i, 1], ballarray[i, 2]是一对坐标,80, 80是椭圆的高度和宽度,可以改。 bmpGraphics.DrawEllipse( new Pen(Color.FromName(colours[i]), 1),ballarray[i, 1], ballarray[i, 2], 80, 80); } e.Graphics.DrawImageUnscaled(bmp, 0, 0); //在坐标0,0的位置,开始实现以上的图形。 e.Graphics.DrawEllipse( new Pen(Color.Red), g1, g2, 40, 40); //再绘制一个椭圆,用于跟随鼠标 bmpGraphics.Dispose(); //因为图形绘制是在内存中进行的,所以可以释放资源 bmp.Dispose(); } /// <summary> /// 运动过程 (即运的方式)代码在写在timer1的Tick事件中 /// c改变ballarray[]数组中的值,就是在改变椭圆的坐标位置,这些改变可以自定。 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void timer1_Tick( object sender, EventArgs e) { for ( int i = 1; i <= 20; i ) { //不断改变坐标的值,即重新赋值,使得球运动,如果球到了上下左右边界,就要改变球的坐标值. ballarray[i, 1] = ballarray[i, 1] ballarray[i, 3]; ballarray[i, 2] = ballarray[i, 2] ballarray[i, 4]; if ((ballarray[i, 1] 50) >= ClientSize.Width) //如果球到了右边边界,就果弹回, { ballarray[i, 1] = ballarray[i, 1] - ballarray[i, 3]; ballarray[i, 3] = -ballarray[i, 3]; } else if ((ballarray[i, 2] 50) >= ClientSize.Height) //如果球到了底部 { ballarray[i, 2] = ballarray[i, 2] - ballarray[i, 4]; ballarray[i, 4] = -ballarray[i, 4]; } else if (ballarray[i, 1] <= 1) //如果球到了左边界 { ballarray[i, 1] = ballarray[i, 1] - ballarray[i, 3]; ballarray[i, 3] = -ballarray[i, 3]; } else if (ballarray[i, 2] <= 1) //如果球到了顶端 { ballarray[i, 2] = ballarray[i, 2] - ballarray[i, 4]; ballarray[i, 4] = -ballarray[i, 4]; } } this .Refresh(); //刷新 } /// <summary> /// 跟随鼠标的椭圆的坐标的改变 /// m.X,m.Y是指当前鼠标屏幕上的坐标位置 /// </summary> /// <param name="m"></param> protected override void OnMouseMove(MouseEventArgs m) { g1 = m.X; g2 = m.Y; } } |
好例子网口号:伸出你的我的手 — 分享!
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论