WPF画N角芒星,正N角星
计算顶部三角形坐标方法:
- /// <summary>
- /// 获取顶三角形坐标
- /// </summary>
- /// <param name="r">外接圆半径(顶点到中心的距离)</param>
- /// <param name="n">N角星</param>
- /// <param name="x1">左横坐标</param>
- /// <param name="y1">纵坐标</param>
- /// <param name="x2">又横坐标</param>
- private void GetCoordinate(double r, int n, out double x1, out double y1, out double x2)
- {
- double unitAngle = ;
- if(n < )
- {
- //奇数角星锐角30,偶数角星锐角和为45
- unitAngle = n % == ? : ;
- }
- else
- {
- //奇数角星锐角和为180,偶数角星锐角和为360
- unitAngle = n % == ? / n : / n;
- }
- double l = Math.PI / ; //弧度单位
- double a = Math.Sin( / ( * n) * l), //多角芒星各角连中心分割所得的夹角的一半
- b = Math.Sin(unitAngle/ * l), //芒星内角锐角的一半
- c = Math.Sin(( - / ( * n) - unitAngle/) * l), //芒星除了内锐角的其他内角与中心点连线的夹角
- d = Math.Cos(( / ( * n)) * l);
- x1 = (a * r * b) / c; //正弦定理
- y1 = (d * r * b) / c;
- x2 = r - x1; //x2与x1关于中心点垂线对称,右移r个长度
- x1 += r; //右移r个长度
- y1 -= r; //下移r个长度
- //取正数
- x1 = x1 < ? x1 * (-) : x1;
- y1 = y1 < ? y1 * (-) : y1;
- x2 = x2 < ? x2 * (-) : x2;
- }
1、画空心正N角星
思路:通过计算得到顶部一个三角形的坐标,画出三角形,再画出三角形顺时针旋转一周的其他N-1个三角形。组合起来得到一个伪的多角芒星。
- /// <summary>
- /// 画多角芒星,正多角星
- /// </summary>
- /// <param name="r">外接圆半径</param>
- /// <param name="n">角数量</param>
- /// <returns>返回包含正多角星的Canvas</returns>
- private Canvas DrawingPentacle(double r, int n)
- {
- double x1, x2, y1;
- GetCoordinate(r, n, out x1, out y1, out x2);
- Canvas canvas = new Canvas() { Width = , Height = };
- //重复N次画出N个三角形斜边
- for (int i = ; i <= n; i++)
- {
- DrawingVisual dv = new DrawingVisual();
- using (DrawingContext dc = dv.RenderOpen())
- {
- dc.DrawGeometry(Brushes.LightBlue, new Pen(Brushes.BlueViolet, ), Geometry.Parse(string.Format("M {0},0 L{1},{2} M 50,0 L{3},{2}", r, x1, y1, x2)));
- }
- //顺时针旋转
- dv.Transform = new RotateTransform(i * / n, , );
- //作为图片资源放到图片控件中
- RenderTargetBitmap rtb = new RenderTargetBitmap(, , , , PixelFormats.Default);
- rtb.Render(dv);
- Image image = new Image() { Source = rtb };
- canvas.Children.Add(image);
- }
- return canvas;
- }
WPF画N角芒星,正N角星的更多相关文章
- CSS实现圆角,三角,五角星,五边形,爱心,12角星,8角星,圆,椭圆,圆圈,八卦
转自:http://blog.csdn.net/chenhongwu666/article/details/38905803 CSS实现圆角,三角,五角星,五边形,爱心,12角星,8角星,圆,椭圆,圆 ...
- WPF画箭头
简介 参考Using WPF to Visualize a Graph with Circular Dependencies的基础上写了一个WPF画箭头的库. 效果图如下: 使用的XAML代码如下: ...
- WPF 画线动画效果实现
原文:WPF 画线动画效果实现 弄了将近三天才搞定的,真是艰辛的实现. 看了很多博客,都太高深了,而且想要实现的功能都太强大了,结果基础部分一直实现不了,郁闷啊~ 千辛万苦终于找到了一个Demo,打开 ...
- OpenCV-Python:Harris角点检测与Shi-Tomasi角点检测
一.Harris角点检测 原理: 角点特性:向任何方向移动变换都很大. Chris_Harris 和 Mike_Stephens 早在 1988 年的文章<A CombinedCorner an ...
- 【OpenCV】角点检测:Harris角点及Shi-Tomasi角点检测
角点 特征检测与匹配是Computer Vision 应用总重要的一部分,这需要寻找图像之间的特征建立对应关系.点,也就是图像中的特殊位置,是很常用的一类特征,点的局部特征也可以叫做“关键特征点”(k ...
- 角点检测:Harris角点及Shi-Tomasi角点检测
角点 特征检测与匹配是Computer Vision 应用总重要的一部分,这需要寻找图像之间的特征建立对应关系.点,也就是图像中的特殊位置,是很常用的一类特征,点的局部特征也可以叫做“关键特征点”(k ...
- c# 半角转换为全角 判断是否是全角
#region 半角转换为全角 /// <summary> /// 半角转换为全角 ////转全角的函数(SBC case) ///任意字符串 ///全角空格为12288,半角空格为32 ...
- 提供对字符串的全角->半角,半角->全角转换
package com.opslab.util.algorithmImpl; import com.opslab.util.StringUtil; /** * 提供对字符串的全角->半角,半角- ...
- WPF画线问题,几千条以后就有明显的延迟了。
我现在是这么画的,class A { private GeometryGroup _lines; private Path _path; public A() { _path.Data = ...
随机推荐
- Heapsort 堆排序算法详解(Java实现)
Heapsort (堆排序)是最经典的排序算法之一,在google或者百度中搜一下可以搜到很多非常详细的解析.同样好的排序算法还有quicksort(快速排序)和merge sort(归并排序),选择 ...
- Android Service之LOCATION_SERVICE
Android提供了GPS功能 LocationManager obj = (LocationManager)getSystemService(Context.LOCATION_SERVICE) Pe ...
- Android调用 Webservice报org.ksoap2.serialization.SoapPrimitive(转)
android Webservice开发的时候一般情况下大家接受webservice服务器返回值的时候都是使用SoapObject soapObject = (SoapObject) envelope ...
- Spring Boot + Elasticsearch
spring data elasticsearch elasticsearch 2.0.0.RELEASE 2.2.0 1.4.0.M1 1.7.3 1.3.0.RELEASE 1.5.2 1.2.0 ...
- perl 分析mysql binlog
binlog 日志格式: use `zjzc`/*!*/; SET TIMESTAMP=1476326343/*!*/; UPDATE `ProductAccess` pa SET pa.access ...
- HDOJ 1056 HangOver(水题)
Problem Description How far can you make a stack of cards overhang a table? If you have one card, yo ...
- linux下服务器管理
0.更新国内yum源,参考:http://blog.csdn.net/zhaoyue007101/article/details/8456188 1.创建用户.用户组: 新增用户组 groupadd ...
- weblogic Connection has already been closed解决方法
今天正式环境下的有一个功能报错,看了下weblogic日志,报连接已经关闭. com.ibatis.common.jdbc.exception.NestedSQLException: --- The ...
- win7安装ruby on rails
开发机:win7 旗舰版 - 64位 1,安装ruby,下载rubyinstaller-2.0.0-p451.exe 下载地址:http://rubyinstaller.org/downloads/ ...
- 再谈javascript原型继承
Javascript原型继承是一个被说烂掉了的话题,但是自己对于这个问题一直没有彻底理解,今天花了点时间又看了一遍<Javascript模式>中关于原型实现继承的几种方法,下面来一一说明下 ...