仿移动话费查询页面生成的饼图

简介: 最近在查询移动历史话费页面上,新增加了一个小小的消费比例的饼图,就是这个小小的饼图,给我修改话费账单页面造成了一点小小的麻烦,如果我要修改账单里得金额,我必须在Photoshop中重新计算消费比例,再根据此修改出一张新的图,非常麻烦。

        最近在查询移动历史话费页面上,新增加了一个小小的消费比例的饼图,就是这个小小的饼图,给我修改话费账单页面造成了一点小小的麻烦,如果我要修改账单里得金额,我必须在Photoshop中重新计算消费比例,再根据此修改出一张新的图,非常麻烦。因此我尝试完全仿照它的样式自己用代码绘制出这样一个“小圆饼”。还好的是,这个小饼比较简单,固定由三部分费用组成,详见下图所示。

      

       这个图虽然比较简单,但也存在绘制饼图的所有“麻烦”要素:

       (1)角度变换问题。饼图并不是正透视,而是倾斜视角,所以角度存在变幻关系。这里的饼图和视平线成一个倾斜夹角,因此我们简单的认为,假设以圆饼圆心为原点,圆饼边缘上的点的横坐标不变,而纵坐标y具有这样的变换关系:y'=y*k; 其中k=椭圆高度/椭圆宽度;如下图所示:

     

       因此 tg a'=k tg a, 即a'=atan( k*tg a );

       另一点需要注意的是,图上的角度以12点为起始点,因此圆饼边界射线的角度值范围从-90~270度,而反正切函数值的范围是-90~90度,反正切后需要把值重新映射到-90~270度范围。

      (2)另一个难点是绘制圆饼的侧面,也就是在视角可见的圆柱面,每一块侧面由上下两段椭圆弧+两侧两个一条垂直线段组成一个闭合路径,然后填充它即可。具体方法参见DrawPieSide方法,代码略。

       这样我们填入相应的金额,点击生成按钮即可生成一张饼图,然后点击保存按钮即可把图片保存到硬盘。

       源代码下载链接:    

       http://files.cnblogs.com/hoodlum1980/JRL_PieGraph.rar       

目录
相关文章
|
6月前
|
存储 前端开发 JavaScript
一个引号就能攻破你的网站,HTML 编码你学不学
深入解析 HTML 实体编码的完整转义规则与底层原理,详细讲解命名实体与数字实体的区别和各自适用场景,以及在不同上下文中正确编码如何有效防止跨站脚本攻击 XSS
482 1
|
Java
Checkstyle
CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具。它能够自动化代码规范检查过程,从而使得开发人员从这项重要,但是枯燥的任务中解脱出来。 CheckStyle检验的主要内容 ·Javadoc注释 ·命名约定 ·标题 ·Import语句 ·体积大小 ·空白 ·修饰符 ·块 ·代码问题 ·类设计 ·混合检查(包括一些
1447 0
|
10月前
|
JSON 监控 API
1688查询榜单列表API开发指南
1688查询榜单列表API提供热门商品、类目销售排行等多类型榜单数据,支持实时更新,助力电商选品、市场分析与决策。返回商品ID、标题、价格、销量等关键信息,数据格式为JSON,编码UTF-8,适用于多种业务场景。
|
7月前
|
传感器 数据采集 运维
VAE 原理拆解:从概率编码到潜在空间正则化
本文深入浅出拆解VAE构建全流程,聚焦实现、训练、调试与部署,而非纯数学推导。逐行解读PyTorch最小实现,详解编码器、重参数化、解码器三大组件及损失设计,并系统介绍训练后五大推理模式:异常检测、生成合成数据、条件生成、潜在空间分析与数据填补。
737 7
VAE 原理拆解:从概率编码到潜在空间正则化
|
9月前
|
数据采集 Web App开发 安全
uTLS高危指纹漏洞曝光:代理流量易被精准识别,开发者与用户紧急规避指南
uTLS曝高危漏洞,X25519密钥重用及加密套件矛盾致指纹暴露,流量易被识别。影响代理、爬虫等应用,建议禁用相关套件或升级修复版本,加强混淆策略以应对日益精准的TLS指纹检测。
788 6
|
9月前
|
Ubuntu 关系型数据库 MySQL
xampp-linux-1.8.1.tar.gz 怎么安装?Linux下XAMPP离线安装完整步骤
本文介绍在Linux系统(如Ubuntu、CentOS)中安装配置XAMPP的完整步骤。首先下载xampp-linux-1.8.1.tar.gz并存放至/tmp或/opt目录,使用root权限解压到/opt,生成lampp文件夹。随后运行启动脚本开启Apache和MySQL服务,浏览器访问localhost可查看XAMPP欢迎页,验证PHP与phpMyAdmin功能是否正常。通过创建test.php测试PHP解析,登录phpmyadmin确认数据库服务可用,完成环境部署。
|
9月前
|
SQL 运维 监控
上线前检查清单模板及工具指南:告别手忙脚乱,实现稳定发布
上线前检查清单是避免线上事故的关键。本文提供可落地的四阶段检查模板,涵盖代码、配置、部署与协作,并通过工具化、复盘机制让清单真正生效,帮助团队建立质量护城河,将严谨流程转化为开发习惯。
|
11月前
|
人工智能 JSON 搜索推荐
《镜界构图师:Rokid AI眼镜赋能实时摄影构图AR指导系统》
基于Rokid CXR-M SDK,本文设计了一套AR实时摄影构图指导系统,融合AI分析与经典构图法则,通过智能眼镜叠加三分法、黄金分割等辅助线,提供场景自适应的可视化指导。系统实现相机控制、AR渲染与智能建议闭环,助力用户提升构图水平,推动摄影教育智能化升级。(239字)
|
存储 SQL 关系型数据库
MySQL 核心知识与索引优化全解析
本文系统梳理了 MySQL 的核心知识与索引优化策略。在基础概念部分,阐述了 char 与 varchar 在存储方式和性能上的差异,以及事务的 ACID 特性、并发事务问题及对应的隔离级别(MySQL 默认 REPEATABLE READ)。 索引基础部分,详解了 InnoDB 默认的 B+tree 索引结构(多路平衡树、叶子节点存数据、双向链表支持区间查询),区分了聚簇索引(数据与索引共存,唯一)和二级索引(数据与索引分离,多个),解释了回表查询的概念及优化方法,并分析了 B+tree 作为索引结构的优势(树高低、效率稳、支持区间查询)。 索引优化部分,列出了索引创建的六大原则
375 2
|
开发工具 Android开发 iOS开发
Android与iOS生态差异深度剖析:技术架构、开发体验与市场影响####
本文旨在深入探讨Android与iOS两大移动操作系统在技术架构、开发环境及市场表现上的核心差异,为开发者和技术爱好者提供全面的视角。通过对比分析,揭示两者如何塑造了当今多样化的移动应用生态,并对未来发展趋势进行了展望。 ####
1127 27

热门文章

最新文章