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 = ...
随机推荐
- WebApi 4.0 默认方式不支持HttpGet 请求
如果Controller方法中没有指定请求方式,在RC版本中默认是HttpPost ,Beta版本中支持所有方法GET, PUT, POST and Delete,而在RC版本后做了改变只支持Http ...
- iOS 写入文件保存数据的方式
在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题.将数据保存到本地,能够让程序的运行更加流畅,不会出现让人厌恶的菊花形状,使得用户体验更好.下面介绍一下数据保存的方式: 1.NSKeye ...
- 转:PHP include()和require()方法的区别
文章来自于:http://developer.51cto.com/art/200909/153687.htm 本文总结了PHP的include()和require()两种包含外部文件的方法的不同之处. ...
- 【Maven实战】仓库介绍和Nexus的安装
在Maven中我们之前进行配置一个项目的依赖时,引用一下jar包,这些jar包第一次都会从一个地方进行下载,这个地方称为仓库,而对于仓库一般有本地仓库和中心仓库之分,但是我们一般在做项目时会在自己的服 ...
- 【Oracle】安装
http://www.2cto.com/database/201208/150620.html 呵呵,花了一个多小时,左右把11g安装折腾好了.其中折腾SQL Developer 花了好长时间,总算搞 ...
- C++类型转换总结
C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是:TYPE b = (TYPE)a.C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用. const_cast, ...
- QT美化界面的文章(真的很美)
http://www.hookr.cn/tag/qt http://blog.csdn.net/yiyaaixuexi/article/category/758470 http://www.qtcn. ...
- 多线程 Worker Thread 模式
Worker是“工人”的意思,worker thread pattern中,工人线程(worker thread)会一次抓一件工作来处理,当没有工作可做时,工人线程会停下来等待心得工作过来. Work ...
- 《Linear Algebra and Its Applications》-chaper1-向量方程、矩阵方程和线性方程组
向量: 向量的基本运算:向量的运算最基本的一件事情,就是基于它n个分量上进行,即对于两个分量的向量a = <a1,a2>,b = <b1,b2>,有a + b = <a1 ...
- mybatis使用时org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):的错误
最近在使用mybatis时,出现了 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): 这 ...