C#每天抄一点(12):多边形连线图形
13 Oct 2011这节的内容有点意思,画一个多边形,很好玩~
我会给示意图,表上各点的位置,希望可以帮大家理解。(这代码是抄的,不过可以学很多东西)
通过修改PointNum可以画出更多点的图形~但是不要忘了改x,y坐标的数组。
01 /*
02 * 由SharpDevelop创建。
03 * 用户: Lazynight
04 * 日期: 2011/10/13
05 * 时间: 20:31
06 *
07 * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
08 */
09 using System;
10 using System.Collections.Generic;
11 using System.Drawing;
12 using System.Windows.Forms;
13 using System.Drawing.Drawing2D;
14
15 namespace Lazy12_多边形连线图形
16 {
17 public partial class MainForm : Form
18 {
19 public MainForm()
20 {
21 InitializeComponent();
22 }
23 public void Lazy_Draw()
24 {
25 int i;
26 int PointNum=20; //定义多边形的点数
27 float r; //多边形半径
28 float[]x=new float[40]; //点横坐标数组,大于等于PointNum个数
29 float[]y=new float[40]; //点纵坐标数组,大于等于PointNum个数
30 this.ClientSize=new Size(500,500); //工作区大小
31 r=this.ClientSize.Width/2; //设定半径大小
32 Graphics Lazy_pic=this.CreateGraphics(); //创建Graphics对象实例
33 for(i=;i<PointNum;i++) //循环给点坐标赋值
34 {
35 x[i]=(float)(r*Math.Cos(2*i*Math.PI/PointNum)+this.ClientSize.Width/2);
36 y[i]=(float)(r*Math.Sin(2*i*Math.PI/PointNum)+this.ClientSize.Height/2);
37 }
38 for(int j=;j<PointNum-1;j++) //嵌套循环画线,外嵌为PointNum-1个点的各点(),
39 //内嵌为此点与其他PointNum个点的连线(包括自身)
40 { //为什么只画PointNum-1个点呢?因为当画到最后一个点时,
41 //最后一个点与各点的连线已经被之前的点画完。
42 for(int k=;k<PointNum;k++) //当然,PointNum可以设很大,不妨试试哦。
43 {
44 Lazy_pic.DrawLine(Pens.Red,x[j],y[j],x[k],y[k]);
45 }
46 }
47 }
48 void MainFormLoad(object sender, EventArgs e)
49 {
50 this.BackColor =Color.White; //设置窗体背景色为透明
51 this.TransparencyKey = Color.White;
52 this.timer1.Enabled=true; //通过Timer激活Lazy_Draw()
53 this.TopMost=true; //程序总在最前端
54 this.StartPosition=FormStartPosition.CenterScreen; //窗体初始位置
55 }
56 void Timer1Tick(object sender, EventArgs e)
57 {
58 Graphics Lazy_pic=this.CreateGraphics();
59 Lazy_Draw();
60 }
61 }
62 }
02 * 由SharpDevelop创建。
03 * 用户: Lazynight
04 * 日期: 2011/10/13
05 * 时间: 20:31
06 *
07 * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
08 */
09 using System;
10 using System.Collections.Generic;
11 using System.Drawing;
12 using System.Windows.Forms;
13 using System.Drawing.Drawing2D;
14
15 namespace Lazy12_多边形连线图形
16 {
17 public partial class MainForm : Form
18 {
19 public MainForm()
20 {
21 InitializeComponent();
22 }
23 public void Lazy_Draw()
24 {
25 int i;
26 int PointNum=20; //定义多边形的点数
27 float r; //多边形半径
28 float[]x=new float[40]; //点横坐标数组,大于等于PointNum个数
29 float[]y=new float[40]; //点纵坐标数组,大于等于PointNum个数
30 this.ClientSize=new Size(500,500); //工作区大小
31 r=this.ClientSize.Width/2; //设定半径大小
32 Graphics Lazy_pic=this.CreateGraphics(); //创建Graphics对象实例
33 for(i=;i<PointNum;i++) //循环给点坐标赋值
34 {
35 x[i]=(float)(r*Math.Cos(2*i*Math.PI/PointNum)+this.ClientSize.Width/2);
36 y[i]=(float)(r*Math.Sin(2*i*Math.PI/PointNum)+this.ClientSize.Height/2);
37 }
38 for(int j=;j<PointNum-1;j++) //嵌套循环画线,外嵌为PointNum-1个点的各点(),
39 //内嵌为此点与其他PointNum个点的连线(包括自身)
40 { //为什么只画PointNum-1个点呢?因为当画到最后一个点时,
41 //最后一个点与各点的连线已经被之前的点画完。
42 for(int k=;k<PointNum;k++) //当然,PointNum可以设很大,不妨试试哦。
43 {
44 Lazy_pic.DrawLine(Pens.Red,x[j],y[j],x[k],y[k]);
45 }
46 }
47 }
48 void MainFormLoad(object sender, EventArgs e)
49 {
50 this.BackColor =Color.White; //设置窗体背景色为透明
51 this.TransparencyKey = Color.White;
52 this.timer1.Enabled=true; //通过Timer激活Lazy_Draw()
53 this.TopMost=true; //程序总在最前端
54 this.StartPosition=FormStartPosition.CenterScreen; //窗体初始位置
55 }
56 void Timer1Tick(object sender, EventArgs e)
57 {
58 Graphics Lazy_pic=this.CreateGraphics();
59 Lazy_Draw();
60 }
61 }
62 }
转载请注明:于哲的博客 » C#每天抄一点(12):多边形连线图形