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

简介: 最近在查询移动历史话费页面上,新增加了一个小小的消费比例的饼图,就是这个小小的饼图,给我修改话费账单页面造成了一点小小的麻烦,如果我要修改账单里得金额,我必须在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       

目录
相关文章
|
前端开发 JavaScript
HTML+CSS+JS仿京东购物车页面动态效果
HTML+CSS+JS仿京东购物车页面动态效果
182 0
|
3月前
|
移动开发
H5页面及店铺分享带图简介
H5页面及店铺分享带图简介
|
6月前
|
前端开发 JavaScript
CSS动画(个人资料卡片)
CSS动画(个人资料卡片)
|
开发者
【 uniapp - 黑马优购 | 购物车页面(1)】如何创建购物车编译模式、 商品列表区域实现
【 uniapp - 黑马优购 | 购物车页面(1)】如何创建购物车编译模式、 商品列表区域实现
268 0
|
小程序 JavaScript
微信小程序商品筛选,侧方弹出动画选择页面
微信小程序商品筛选,侧方弹出动画选择页面
193 0
|
小程序 开发者 iOS开发
【 uniapp - 黑马优购 | 商品详情 】详情页UI结构设计、商品导航区域实现
【 uniapp - 黑马优购 | 商品详情 】详情页UI结构设计、商品导航区域实现
355 0
|
数据可视化 前端开发
DataV图表-排名轮播表自定义
DataV图表-排名轮播表自定义
1760 1
|
小程序 JavaScript 定位技术
小程序里显示店铺地址,可在地图上查看,可点击导航到店铺
小程序里显示店铺地址,可在地图上查看,可点击导航到店铺
248 0
|
JSON 小程序 数据库
微信小程序实现时间轴和地区列表的功能
微信小程序实现时间轴和地区列表的功能
220 0
【Axure教程】分类筛选卡片(订单卡片案例)
【Axure教程】分类筛选卡片(订单卡片案例)
【Axure教程】分类筛选卡片(订单卡片案例)