GIS演算法(二)運用C#自帶的函式繪製五角星和多邊形(C#)
阿新 • • 發佈:2019-02-03
前言:
當我們敲下第一行程式碼向計算機世界說一句—–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());
}
}
}