1. 程式人生 > >GIS演算法(二)運用C#自帶的函式繪製五角星和多邊形(C#)

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