博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sliverlight实例之 绘制扇形和环形图
阅读量:4315 次
发布时间:2019-06-06

本文共 2610 字,大约阅读时间需要 8 分钟。

原文:

 

未解决:

1,任意偏角,是个重点问题:

(1),  另一边在弧上坐标

(2),  这个弧的弧度(ArcSegment中的Size或Angle属性)

(3),  如何把这个弧度做成依赖属性配置的 

2,做成一个自定义控件

 

有时间,再完成 

 

准备知识:

1,  平面几何思维(三角形,圆,弧,曲线,斜率,方程式)

2,  三次贝塞尔曲线的数学公式

3,  定时器与动画的区别是时间序列

4,  缓动动画

 

一,1道几何题

 

 

 

已知两点坐标确定一条直线,直线上存在一个未知点,起始点与未知点的距离已知

求:未知点坐标

 

思路,如下:

 

 

求AB长度,可以根据两点距离公式

 

 

 

 

 

 

二,写个C#

 

定义一个Point类,代表坐标,它有两个成员x和y

定义一个方法GetLength,获取两点距离

 

/*            有两点坐标a(1,24) b(35,58) 连成一条直线,现在ab连线有一点p,pa长度为12            求:p点的坐标        */        class Point        {            public double x;            public double y;            public Point(int x,int y)            {                this.x=x;                this.y=y;            }            public static double GetLength(Point a,Point b)            {                return Math.Sqrt(Math.Pow(a.x - b.x, 2) + Math.Pow(a.y - b.y, 2));            }        }       private Point GetPoint(Point a, Point b, double otherLength)        {            Point p = new Point(0, 0);            p.x = otherLength * (b.x - a.x) / Point.GetLength(a, b) + a.x;            p.y = otherLength * (b.y - a.y) / Point.GetLength(a, b) + a.y;            return p;         }        //测试方法        static void main()        {            double otherLength = 12;            double radius = 58;            //a:起点      b:终点    p:a,b之间任意一点            Point a1 = new Point(1, 24);            Point b1 = new Point(35, 58);      }

 

 

 

 

三,绘制一个扇形

 

思路:使用PathGeometry中的LinearSegment和ArcSegment来绘制

 

 

 

 

(1)     确定两点坐标,绘制一条直线

(2)     已知半径长度,得到圆心坐标

(3)     按任意偏角绘制一条弧形

 

这个任意偏角,是个重点问题:

(1),  另一边在弧上坐标

(2),  如何把这个弧度做成依赖属性配置的

 

xaml代码:

 

 

效果图

 

 

 

 

 

四,绘制环形

 

 

 

思路:

上图由8个扇形组成,即每个扇形偏角45度

可以用8个按钮代替

 

那么:

将按钮做成控件模板,内容就是一个扇形

则8个按钮使用这个控件模板

再对每个按钮进行45度旋转(使用RotateTransform实现)

 

 

定义控件模板

 

 

使用样式

                        

 

posted on
2015-04-15 17:56 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/lonelyxmas/p/4429308.html

你可能感兴趣的文章
python3----练习题(购物车)
查看>>
IOS不错的学习资源特别是图片效果的处理上
查看>>
HDU 2072(字符串的流式操作,学习了)
查看>>
win10 vs2015源码编译opencv、opencv_contrib、Tesseract
查看>>
css取消a标签在移动端点击时的背景颜色
查看>>
Chart-template
查看>>
python获取参数列表
查看>>
bind,call,apply学习(一)
查看>>
从开始到结束以及我的尝试
查看>>
spring 部分配置内容备忘
查看>>
C# 读取配置文件方法
查看>>
Annotation(注解)
查看>>
MySQL(四)--练习题
查看>>
高效掌握C#第五回---猜单词游戏
查看>>
07-Java 中的IO操作
查看>>
uclibc,eglibc,glibc之间的区别和联系【转】
查看>>
Java魔法堂:找外援的利器——Runtime.exec详解
查看>>
mysql数据库存放路径
查看>>
TestNG(五)常用元素的操作
查看>>
解决 Visual Studio 点击添加引用无反应的问题
查看>>