网址:https://www.cnblogs.com/CSSZBB/p/12746214.html

饼状图相对来说复杂一些。因为需要计算很多坐标,线来看下这个列子。

圆首先想到Ellipse。但是Ellipse无法对某部分扇形绘制特别的颜色。所以我们需要更加细致的工具。

由列子我们可以想象。该圆由4部分扇形组成。这些扇形的半径相同。那么我们可以绘制4个扇形,把这些扇形像积木一样拼装在一起。那就是一个正圆了。

画扇形可以用什么那?

需要用到PATH了 ,其中画圆弧需要用到ArcSegment 。我们想象按照WPF 的坐标体系。构建一个圆的坐标系。我们以 (200,200)为圆心。150为半径。那么构建出我们的圆

圆上两点和圆心 确定一段圆弧。上图扇形中,圆弧的起点是 50,200。终点是200,50 .圆弧占圆的1/4.刚好是90度。坐标比较好算。那么

假设我像绘制一个30度的圆弧那?起点仍然是50,200 。终点的坐标是什么? 它如何计算那?。

让我们回到一个数学问题。坐标50,200.以 坐标 200,200为圆心。顺时针旋转30度以后。得到的坐标是啥?书到用时方恨少啊。。。。。我竟然不知道怎么计算了。

原谅我高考数学没及格。。。

数学上的问题我们不讨论。这里直接说一个C# 类Matrix,这个类可以帮我们完成这个旋转操作,看代码

1
2
3
4
5
Matrix matrix = new Matrix();
Point p = new Point(50, 200);
matrix.RotateAt(30, 200, 200);
matrix.Translate(50, 0);
arc.Point = matrix.Transform(p);

  Matrix类简单点说可以帮我们完成仿射变换。感兴趣的自己去学习一下相关概念,  包括 矩阵运算,向量。里面的数学原理我这种学渣就不暴露下限了。

通过计算得到了圆弧的终点坐标后,圆弧就显示出来啦

。那么,我向再画一部分。45度的蓝色圆弧。相信大家伙也知道怎么画了,先在XAML加一段PATH

在代码种生成新加入Path的圆弧的3个点

至此。如何构建一个圆。大伙应该也会了。只要保证所有圆弧的度数加起来=360度。就可以了

同时,在代码种生成圆弧是比较合理的,这样不用每次在XAML种加一个PATH。考虑到更加轻量级的实现。 我使用了DrawingVisual来代替Path。但是他们的绘图原理是完全一样的

源码路径:https://gitee.com/csszbb/wpf_drawing。  若对您有帮助,请帮我点个赞

WPF 饼状图,柱形图,折线图 (3 饼状图)的更多相关文章

  1. WPF、Silverlight项目中使用柱状图、饼状图、折线图

    在开发的过程中,可能会遇到柱状图.饼状图.折线图来更好的显示数据,最近整理了一下,遂放出来望需要的朋友可以参考.本文仅仅是简单显示,如需复杂显示效果请参考官网代码示例.----本文代码使用WPF,Si ...

  2. 前端数据统计用做Bootstrap的一些柱状图、饼状图和折线图案例

    Bootstrap,来自 Twitter,是目前最受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷. Bootstrap ...

  3. php 生成饼状图,折线图,条形图 通用类 2

    生成饼状图,折线图,条形图通用的php类,这里使用的是国外的 HighCharts,前台页面别忘了调用HighCahrt  js HighCharts中文网站  http://www.hcharts. ...

  4. php 生成饼状图,折线图,条形图 通用类

    生成饼状图,折线图,条形图通用的php类,这里使用的是百度 Echart. Echart 官方网站  http://echarts.baidu.com/ <?php class Echarts ...

  5. AChartEngine 安卓折线图 柱形图等利器

    http://www.eoeandroid.com/thread-548233-1-6.html 最近公司项目中要用到折线图,状态类型的图标要用到折线图,柱形图等,并且能够动态显示,在网上找了许多de ...

  6. WPF入门(四)->线形区域Path内容填充之填充图(ImageBrush)

    原文:WPF入门(四)->线形区域Path内容填充之填充图(ImageBrush) 前面我们提到了LinearGradientBrush可以用来画渐变填充图,那么我们同时也可以使用ImageBr ...

  7. seaborn分类数据可视化:散点图|箱型图|小提琴图|lv图|柱状图|折线图

    一.散点图stripplot( ) 与swarmplot() 1.分类散点图stripplot( ) 用法stripplot(x=None, y=None, hue=None, data=None, ...

  8. 各种图(流程图,思维导图,UML,拓扑图,ER图)简介

    来源于:http://www.cnblogs.com/jiqing9006/p/3344221.html 流程图 1.定义:流程图是对过程.算法.流程的一种图像表示,在技术设计.交流及商业简报等领域有 ...

  9. 【转】各种图(流程图,思维导图,UML,拓扑图,ER图)简介

    原文地址:各种图(流程图,思维导图,UML,拓扑图,ER图)简介 流程图 1.定义:流程图是对过程.算法.流程的一种图像表示,在技术设计.交流及商业简报等领域有广泛的应用. 2.案例 3.计算机语言只 ...

  10. Shader中贴图知识汇总: 漫反射贴图、凹凸贴图、高光贴图、 AO贴图、环境贴图、 光照纹理及细节贴图

    原文过于冗余,精读后做了部分简化与测试实践,原文地址:http://www.j2megame.com/html/xwzx/ty/2571.html   http://www.cnblogs.com/z ...

随机推荐

  1. 『与善仁』Appium基础 — 1、Android系统的测试环境搭建

    目录 1.Android操作系统简介 (1)Android系统诞生 (2)Android系统的结构 (3)Android测试环境搭建整体思路 2.Java环境安装 (1)JDK8下载 (2)安装JDK ...

  2. C语言:const详解

    希望定义这样一种变量,它的值不能被改变,在整个作用域中都保持固定.例如,用一个变量来表示班级的最大人数,或者表示缓冲区的大小.为了满足这一要求,可以使用const关键字对变量加以限定:const in ...

  3. 论文阅读:Robust Visual SLAM with Point and Line Features

    本文提出了使用异构点线特征的slam系统,继承了ORB-SLAM,包括双目匹配.帧追踪.局部地图.回环检测以及基于点线的BA.使用最少的参数对线特征采用标准正交表示,推导了线特征重投影误差的雅克比矩阵 ...

  4. 支付二维码整合 - 三码合一支持支付宝、QQ、微信

    支付二维码整合 - 三码合一支持支付宝.QQ.微信 1. 前提:获取各个二维码的具体内容 在写代码前,我们需要先获取不同支付方式的二维码内容.很简单,只需要打开各个支付码,截图,然后随便找个可以扫码的 ...

  5. Linux CentOS 7 在Apache服务器上安装SSL证书

    在开发微信小程序的时候,wx.request请求的地址必须是https的,所以只能重新配置服务器. 域名和服务器都是在阿里云上买的,系统是CentOS7,安装了Apache服务器.网上也找了一下,很多 ...

  6. SpringBoot读取Resource下文件的几种方式(十五)

    需求:提供接口下载resources目录下的模板文件,(或者读取resources下的文件)给后续批量导入数据提供模板文件. 方式一:ClassPathResource //获取模板文件:注意此处需要 ...

  7. Jmeter 学习 搭建(1)

    功能 1.web自动化测试 2.接口测试 3.压力测试 4.性能测试 5.通过jdbc进行数据库测试 6.java测试 优缺点 优点 1.开源,可扩展性好 2.GUI界面,小巧灵活 3.100%  j ...

  8. C++第三十三篇 -- 研究一下Windows驱动开发(一)内部构造介绍

    因为工作原因,需要做一些与网卡有关的测试,其中涉及到了驱动这一块的知识,虽然程序可以运行,但是不搞清楚,心里总是不安,觉得没理解清楚.因此想看一下驱动开发.查了很多资料,看到有人推荐Windows驱动 ...

  9. Aria2 任意文件写入

    访问aria2,发现服务已启动并且返回404页面 打开http://binux.github.io/yaaw/demo/#打开yaaw,点击配置按钮,填入运行aria2的目标域名:http://you ...

  10. 自动部署Springboot项目脚本小脚本

    #!/bin/bash echo '自动部署Springboot项目脚本...' # aaa.jar 项目jar包 pid=`ps -ef|grep aaa.jar|grep -v grep|grep ...