计算顶部三角形坐标方法:

 1         /// <summary>
 2         /// 获取顶三角形坐标
 3         /// </summary>
 4         /// <param name="r">外接圆半径(顶点到中心的距离)</param>
 5         /// <param name="n">N角星</param>
 6         /// <param name="x1">左横坐标</param>
 7         /// <param name="y1">纵坐标</param>
 8         /// <param name="x2">又横坐标</param>
 9         private void GetCoordinate(double r, int n, out double x1, out double y1, out double x2)
10         {
11             double unitAngle = 0;
12             if(n < 5)
13             {
14                 //奇数角星锐角30,偶数角星锐角和为45
15                 unitAngle = n % 2 == 1 ? 30 : 45;
16             }
17             else
18             {
19                 //奇数角星锐角和为180,偶数角星锐角和为360
20                 unitAngle = n % 2 == 1 ? 180 / n : 360 / n;
21             }
22             double l = Math.PI / 180;    //弧度单位
23             double a = Math.Sin(360 / (2 * n) * l),         //多角芒星各角连中心分割所得的夹角的一半
24                 b = Math.Sin(unitAngle/2 * l),           //芒星内角锐角的一半
25                 c = Math.Sin((180 - 360 / (2 * n) - unitAngle/2) * l),  //芒星除了内锐角的其他内角与中心点连线的夹角
26                 d = Math.Cos((360 / (2 * n)) * l);
27             x1 = (a * r * b) / c;         //正弦定理
28             y1 = (d * r * b) / c;
29             x2 = r - x1;    //x2与x1关于中心点垂线对称,右移r个长度
30             x1 += r;        //右移r个长度
31             y1 -= r;        //下移r个长度
32             //取正数
33             x1 = x1 < 0 ? x1 * (-1) : x1;
34             y1 = y1 < 0 ? y1 * (-1) : y1;
35             x2 = x2 < 0 ? x2 * (-1) : x2;
36         }

View Code

1、画空心正N角星

思路:通过计算得到顶部一个三角形的坐标,画出三角形,再画出三角形顺时针旋转一周的其他N-1个三角形。组合起来得到一个伪的多角芒星。

 1         /// <summary>
 2         /// 画多角芒星,正多角星
 3         /// </summary>
 4         /// <param name="r">外接圆半径</param>
 5         /// <param name="n">角数量</param>
 6         /// <returns>返回包含正多角星的Canvas</returns>
 7         private Canvas DrawingPentacle(double r, int n)
 8         {
 9             double x1, x2, y1;
10             GetCoordinate(r, n, out x1, out y1, out x2);
11             Canvas canvas = new Canvas() { Width = 100, Height = 100 };
12             //重复N次画出N个三角形斜边
13             for (int i = 1; i <= n; i++)
14             {
15                 DrawingVisual dv = new DrawingVisual();
16                 using (DrawingContext dc = dv.RenderOpen())
17                 {
18                     dc.DrawGeometry(Brushes.LightBlue, new Pen(Brushes.BlueViolet, 1), Geometry.Parse(string.Format("M {0},0 L{1},{2} M 50,0 L{3},{2}", r, x1, y1, x2)));
19                 }
20                 //顺时针旋转
21                 dv.Transform = new RotateTransform(i * 360 / n, 50, 50);
22
23                 //作为图片资源放到图片控件中
24                 RenderTargetBitmap rtb = new RenderTargetBitmap(100, 100, 0, 0, PixelFormats.Default);
25                 rtb.Render(dv);
26                 Image image = new Image() { Source = rtb };
27                 canvas.Children.Add(image);
28             }
29             return canvas;
30         }

View Code

转载于:https://www.cnblogs.com/RedSky/p/6101794.html

WPF画N角芒星,正N角星相关推荐

  1. Canvas 画正n角星

    Canvas 画正n角星 看到canvas画图是不由得想起之前的gostscript,两者很类似,借鉴crystalhuhu 的五角星画法 先讲如何画一个正规的五角星 在五角星的内外画两个圆,五角星有 ...

  2. c语言计算特殊角的正弦值,特殊角的三角函数值表 常用的正余弦函数值

    特殊三角函数值一般指在特定角下的正余弦值,这些角度的三角函数值是经常用到的.下面小编整理了特殊角的三角函数值表,供大家参考! 三角函数值表 三角函数相关公式 1.数关系 tanα·cotα=1 sin ...

  3. 各种css形状 CSS实现圆角,三角,五角星,五边形,爱心,12角星,8角星,圆,椭圆,圆圈,八卦等等

    CSS实现圆角,三角,五角星,五边形,爱心,12角星,8角星,圆,椭圆,圆圈,八卦等等 新出的HTML5新增了不少标签,性能更强,原来的很繁琐的功能几个标签就能实现,同时CSS3也推出,更是一大亮点, ...

  4. CSS实现圆角,三角,五角星,五边形,爱心,12角星,8角星,圆,椭圆,圆圈,八卦

    CSS实现圆角,三角,五角星,五边形,爱心,12角星,8角星,圆,椭圆,圆圈,八卦等等 新出的html5新增了不少标签,性能更强,原来的很繁琐的功能几个标签就能实现,同时CSS3也推出,更是一大亮点, ...

  5. 两角和差正余弦公式的证明

    两角和差正余弦公式的证明 北京四中数学组 皇甫力超 论文摘要: 本文对两角和差的正余弦公式的推导进行了探讨. 在单位圆的框架下 , 我们得到了和角余弦公式 ( 方法 1) 与差角余弦公式 ( 方法 2 ...

  6. java输出五行十一列星星_星是什么意思 星字五行属什么

    星字取名属性及五行属什么: 星字的拼音:xing 星的繁体字:星(若无繁体,则显示本字) 星字的起名笔画数:9 星五行属什么:金 星字的取名数理吉凶:吉 星是否为姓氏:是 说明:"星&quo ...

  7. ConerNet角点网络中的角点分类损失的理解

    ConerNet角点网络中的角点分类损失的理解 1.交叉熵损失 2.Focal Loss α--平衡交叉熵 (1−y)γ(1-y)^{\gamma}(1−y)γ简单与困难样本 3.CornerNet的 ...

  8. 航向角,横摆角,车辆质心侧偏角,前轮侧偏角(这又可以分为在轮胎坐标系下和车辆坐标系下的前轮侧偏角哦),前轮转角

    航向角:地面坐标系下,车辆真实运动方向(即车辆质心速度)与横轴(横轴就是全局基准X轴)的夹角.航向角为图中θ 横摆角:指车体纵轴线(也就是x轴)与大地坐标系的横轴(即X轴)的夹角. 车辆质心侧偏角:指 ...

  9. OpenCV —— 角点检测之 Harris 角点检测、Shi-Tomasi 角点检测、FAST 角点检测

    角点检测 Harris 角点检测 实现原理 OpenCV 函数 优化 Shi-Tomasi 角点检测 实现原理 OpenCV 函数 FAST 角点检测 实现原理 OpenCV 函数 优化 在图像处理和 ...

最新文章

  1. windows下DOS命令关闭占用的端口
  2. SAP RETAIL 初阶之使用事务代码WRFMATCOPY创建商品主数据
  3. 教师php一对一修改成绩,【教师助手】班小二发成绩,一键导入成绩表格,自动一对一私密分发...
  4. iOS开发事件分发机制—响应链—手势影响
  5. ICA独立成分分析—FastICA基于负熵最大
  6. 热烈祝贺《大数据》主编郑纬民教授当选中国工程院院士!!!
  7. 打包jar文件 外部调用资源 so等
  8. 什么是动态链接库(DLL)以及常见问题
  9. Linux 文件系统IO性能优化
  10. 【嵌入式】Linux开发工具arm-linux-gcc安装及使用
  11. C#:系统学习笔记(一)MVC基础篇
  12. u盘加密truecrypt_Mac OS X上的TrueCrypt驱动器加密入门
  13. dc是什么游戏的简称_游戏缩写简称
  14. 小孟5w接了个盲盒小程序,三周开发完毕
  15. Jmeter性能测试云平台搭建
  16. Java hashCode详解
  17. 8421码5421码2421码余3码
  18. TOF相机很好的总结
  19. python:SyntaxError: invalid syntax
  20. springboot项目导出excel 合并单元格表格

热门文章

  1. linux查看cpu个数命令,Linux怎么查看物理CPU个数
  2. 存储控制器wwn号_正文-新华三集团-H3C
  3. mysql主从读写Windows_Windows操作系统下的MySQL主从复制及读写分离
  4. redis3.2.1php扩展,php7.2.1+redis3.2.1 安装redis扩展(windows系统)
  5. mysql 中文 length_mysql length()中文长度一些问题整理
  6. python作者龟叔_龟叔和他的Python
  7. Python知识点2——列表基础
  8. python接收邮件内容启动程序_Python实现发送与接收邮件的方法详解
  9. python中噪音是什么意思_Python数据噪音
  10. crowd counting_[Crowd_Counting]-PGCNet-ICCV2019