C# 绘制简单图形

先来个等边倒三角形练手:

点1 0,0

点2 100,0

点3 cos(60),sin(60)

var p4 = new Point();
p4.X = 0;
p4.Y = 0;

var p5 = new Point();
p5.X = width;
p5.Y = 0;

a = 60; // 角度
var p6 = new Point();
p6.X = (int)(0 + width * (Math.Cos(Math.PI *a/180d)));
p6.Y = (int)(0 + width * (Math.Sin(Math.PI *a/180d)));

points[0] = p4;
points[1] = p5;
points[2] = p6;
points[3] = p4;
         
Graphics g = e.Graphics;
var p = new Pen(Color.Black);
g.DrawLines(p, points);

 利用刚才的成果,绘制一个等边六角形:

var points = new Point[7];
var width = 100;
int a = 60;

var p1 = new Point();
p1.X = 0;
p1.Y = (int)(0 + width * (Math.Sin(Math.PI * a / 180d)));

var p2 = new Point();
p2.X = (int)(0 + width * (Math.Cos(Math.PI * a / 180d)));
p2.Y = 0;

var p3 = new Point();
p3.X = p2.X + width;
p3.Y = 0;

var p4 = new Point();
p4.X = p2.X + p3.X;
p4.Y = (int)(0 + width * (Math.Sin(Math.PI * a / 180d)));

var p5 = new Point();
p5.X = p3.X;
p5.Y = p1.Y * 2;

var p6 = new Point();
p6.X = p2.X;
p6.Y = p5.Y;
            
points[0] = p1;
points[1] = p2;
points[2] = p3;
points[3] = p4;
points[4] = p5;
points[5] = p6;
points[6] = p1;

Graphics g = e.Graphics;
var p = new Pen(Color.Black);
g.DrawLines(p, points);

再来一个:

a = 30;
var p1 = new Point();
p1.X = 0;
p1.Y = (int)(0 + width * (Math.Sin(Math.PI * a / 180d)));

var p2 = new Point();
p2.X = (int)(0 + width * (Math.Cos(Math.PI * a / 180d)));
p2.Y = 0;

var p3 = new Point();
p3.X = p2.X * 2;
p3.Y = p1.Y;

var p4 = new Point();
p4.X = p3.X;
p4.Y = p3.Y + width;

var p5 = new Point();
p5.X = p2.X;
p5.Y = p4.Y + p1.Y;

var p6 = new Point();
p6.X = 0;
p6.Y = p1.Y + width;

points[0] = p1;
points[1] = p2;
points[2] = p3;
points[3] = p4;
points[4] = p5;
points[5] = p6;
points[6] = p1;

最终效果图:

 给六边形加两个内圆:

// 画一个内圆
var x = width - (int)(0 + width * (Math.Cos(Math.PI * a / 180d))); ;
var y = 0;
p.Color = Color.DarkBlue;
g.DrawEllipse(p, x, y, (width - x) * 2, (width - x) * 2);

// 画一个内圆
x = 0;
y = width - (int)(0 + width * (Math.Cos(Math.PI * a / 180d)));
p.Color = Color.Violet;
g.DrawEllipse(p, x, y, (width - y) * 2, (width - y) * 2);

 

posted on 2022-07-24 09:23  z5337  阅读(379)  评论(0)    收藏  举报