GIS算法(二)运用C#自带的函数绘制五角星和多边形(C#)

前言:

当我们敲下第一行代码向计算机世界说一句—–Hello World 我们就打开了一扇通往计算机世界的大门。
计算机的世界总是充满着未知和挑战,
当我们的代码第一次出现在漆黑的控制台;
当我们第一次实现和计算机的交互;
当我们第一次完成自己的窗体应用。
我们都会不禁感慨:———————–咋又出BUG了?

额( ఠൠఠ )ノ
反正当我们告别乌漆嘛黑的控制台,还是有点小激动的。。。。。。
但是当我接触到绘图的时候还是会感慨 WO COOL !(我画的是啥?它为什么要出现在这里?为什么这么丑?)( o=^•ェ•)o ┏━┓

开整:

算法流程:

这里写图片描述
这里写图片描述

界面:

这里写图片描述

代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 算法12
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Pen mypen = new Pen(Color.Blue, 3);
            Graphics g = this.CreateGraphics();
            g.Clear(Color.White);

            double PI = 3.1415926535897;
            double x0 = Convert.ToDouble(textBox1.Text), y0 = Convert.ToDouble(textBox3.Text), R1 = Convert.ToDouble(textBox2.Text);
            double R2 = R1 * 0.38196;
            double ANG = PI / 2 - PI / 5;
            List<Point> points = new List<Point>();
            Point p = new Point();
            p.X = Convert.ToInt32(x0);
            p.Y = Convert.ToInt32(y0 + R1);
            points.Add(p);
            for(int i = 1; i < 10; i++)
            {
                if(i % 2 == 0)
                {
                    p.X = Convert.ToInt32(x0 + R1 * Math.Cos(ANG));
                    p.Y = Convert.ToInt32(y0 + R1 * Math.Sin(ANG));
                }
                else
                {
                    p.X = Convert.ToInt32(x0 + R2 * Math.Cos(ANG));
                    p.Y = Convert.ToInt32(y0 + R2 * Math.Sin(ANG));
                }
                points.Add(p);
                ANG -= PI / 5;
            }
            g.DrawPolygon(mypen, points.ToArray());
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Pen mypen = new Pen(Color.Blue, 3);
            Graphics g = this.CreateGraphics();
            g.Clear(Color.White);

            double PI = 3.1415926535897;
            double x0 = Convert.ToDouble(textBox1.Text), y0 = Convert.ToDouble(textBox3.Text), R1 = Convert.ToDouble(textBox2.Text);
            int N = 100;
            double ANG = PI / 2;
            double DW = 2 * PI / N;
            double W0 = 0.01745 * ANG - (PI + DW) / 2;
            List<Point> points = new List<Point>();
            Point p = new Point();
            for(int i = 0;i < N; i++)
            {
                double W = W0 + i * DW;
                p.X = Convert.ToInt32(x0 + R1 * Math.Cos(W));
                p.Y = Convert.ToInt32(y0 + R1 * Math.Sin(W));
                points.Add(p);
            }
            g.DrawPolygon(mypen, points.ToArray());
        }
    }
}

效果

这里写图片描述

GitHub地址:

为算法12

猜你喜欢

转载自blog.csdn.net/define_lin/article/details/80460400
今日推荐