随笔 - 748  文章 - 1  评论 - 107  阅读 - 34万

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   z5337  阅读(372)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2017-07-24 [转]Explorer.exe的命令行参数
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示