WPF画N角芒星,正N角星
计算顶部三角形坐标方法:
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角星相关推荐
- Canvas 画正n角星
Canvas 画正n角星 看到canvas画图是不由得想起之前的gostscript,两者很类似,借鉴crystalhuhu 的五角星画法 先讲如何画一个正规的五角星 在五角星的内外画两个圆,五角星有 ...
- c语言计算特殊角的正弦值,特殊角的三角函数值表 常用的正余弦函数值
特殊三角函数值一般指在特定角下的正余弦值,这些角度的三角函数值是经常用到的.下面小编整理了特殊角的三角函数值表,供大家参考! 三角函数值表 三角函数相关公式 1.数关系 tanα·cotα=1 sin ...
- 各种css形状 CSS实现圆角,三角,五角星,五边形,爱心,12角星,8角星,圆,椭圆,圆圈,八卦等等
CSS实现圆角,三角,五角星,五边形,爱心,12角星,8角星,圆,椭圆,圆圈,八卦等等 新出的HTML5新增了不少标签,性能更强,原来的很繁琐的功能几个标签就能实现,同时CSS3也推出,更是一大亮点, ...
- CSS实现圆角,三角,五角星,五边形,爱心,12角星,8角星,圆,椭圆,圆圈,八卦
CSS实现圆角,三角,五角星,五边形,爱心,12角星,8角星,圆,椭圆,圆圈,八卦等等 新出的html5新增了不少标签,性能更强,原来的很繁琐的功能几个标签就能实现,同时CSS3也推出,更是一大亮点, ...
- 两角和差正余弦公式的证明
两角和差正余弦公式的证明 北京四中数学组 皇甫力超 论文摘要: 本文对两角和差的正余弦公式的推导进行了探讨. 在单位圆的框架下 , 我们得到了和角余弦公式 ( 方法 1) 与差角余弦公式 ( 方法 2 ...
- java输出五行十一列星星_星是什么意思 星字五行属什么
星字取名属性及五行属什么: 星字的拼音:xing 星的繁体字:星(若无繁体,则显示本字) 星字的起名笔画数:9 星五行属什么:金 星字的取名数理吉凶:吉 星是否为姓氏:是 说明:"星&quo ...
- ConerNet角点网络中的角点分类损失的理解
ConerNet角点网络中的角点分类损失的理解 1.交叉熵损失 2.Focal Loss α--平衡交叉熵 (1−y)γ(1-y)^{\gamma}(1−y)γ简单与困难样本 3.CornerNet的 ...
- 航向角,横摆角,车辆质心侧偏角,前轮侧偏角(这又可以分为在轮胎坐标系下和车辆坐标系下的前轮侧偏角哦),前轮转角
航向角:地面坐标系下,车辆真实运动方向(即车辆质心速度)与横轴(横轴就是全局基准X轴)的夹角.航向角为图中θ 横摆角:指车体纵轴线(也就是x轴)与大地坐标系的横轴(即X轴)的夹角. 车辆质心侧偏角:指 ...
- OpenCV —— 角点检测之 Harris 角点检测、Shi-Tomasi 角点检测、FAST 角点检测
角点检测 Harris 角点检测 实现原理 OpenCV 函数 优化 Shi-Tomasi 角点检测 实现原理 OpenCV 函数 FAST 角点检测 实现原理 OpenCV 函数 优化 在图像处理和 ...
最新文章
- windows下DOS命令关闭占用的端口
- SAP RETAIL 初阶之使用事务代码WRFMATCOPY创建商品主数据
- 教师php一对一修改成绩,【教师助手】班小二发成绩,一键导入成绩表格,自动一对一私密分发...
- iOS开发事件分发机制—响应链—手势影响
- ICA独立成分分析—FastICA基于负熵最大
- 热烈祝贺《大数据》主编郑纬民教授当选中国工程院院士!!!
- 打包jar文件 外部调用资源 so等
- 什么是动态链接库(DLL)以及常见问题
- Linux 文件系统IO性能优化
- 【嵌入式】Linux开发工具arm-linux-gcc安装及使用
- C#:系统学习笔记(一)MVC基础篇
- u盘加密truecrypt_Mac OS X上的TrueCrypt驱动器加密入门
- dc是什么游戏的简称_游戏缩写简称
- 小孟5w接了个盲盒小程序,三周开发完毕
- Jmeter性能测试云平台搭建
- Java hashCode详解
- 8421码5421码2421码余3码
- TOF相机很好的总结
- python:SyntaxError: invalid syntax
- springboot项目导出excel 合并单元格表格
热门文章
- linux查看cpu个数命令,Linux怎么查看物理CPU个数
- 存储控制器wwn号_正文-新华三集团-H3C
- mysql主从读写Windows_Windows操作系统下的MySQL主从复制及读写分离
- redis3.2.1php扩展,php7.2.1+redis3.2.1 安装redis扩展(windows系统)
- mysql 中文 length_mysql length()中文长度一些问题整理
- python作者龟叔_龟叔和他的Python
- Python知识点2——列表基础
- python接收邮件内容启动程序_Python实现发送与接收邮件的方法详解
- python中噪音是什么意思_Python数据噪音
- crowd counting_[Crowd_Counting]-PGCNet-ICCV2019