吉吉于

C#每天抄一点(12):多边形连线图形

这节的内容有点意思,画一个多边形,很好玩~
我会给示意图,表上各点的位置,希望可以帮大家理解。(这代码是抄的,不过可以学很多东西)

通过修改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 }

下载源码

转载请注明:于哲的博客 » C#每天抄一点(12):多边形连线图形