一则通过Android Canvas动态绘制图形的实例介绍
来源:互联网 发布:源码包安装apache 编辑:程序博客网 时间:2024/06/05 16:42
-- by Yongquan
近期开发工作中,需要实现对双摄光圈的细微调节效果,大概效果如下图,当动画比较精细时,如果使用帧动画,需要的图片资源会比较多,且调试比较麻烦。本文介绍如何通过Android Canvas的路径,把几何图形转化为程序进行动态绘制。
接着我们需要计算圆弧的起止弧度,从下图可以看出,动画的起始弧度为2度,终止弧度接近被x轴平分,取x轴上方23度,x轴下方20度,于是可以算出动画的移动弧度范围是2~67度。
接下来需要把该图形对应到手机坐标系上,并算出扇形的顶点a、b、c的坐标值,如下图。
坐标(0,0)对应view的左上角,右下角的坐标是(w,h),圆心的坐标是(w/2,h/2),圆的半径r = w / 2。于是,当起始圆弧角度为alpha时,结束圆弧的角度beta = alpha + 43(360 /8 = 45,留出2度作为空白区域),此时a、c点的坐标是:
Xa = w / 2 + cos(alpha)* r
Ya = h / 2 + sin(alpha) * r
Xc = w / 2 + cos(beta)* r
Yc = h / 2 + sin(beta) * r
然后,我们需要根据2条直线的交叉点算出b点的坐标,根据上图,我们可以算出直线ab和bc的方程:
ab的方程是x = Xa,
bc的方程是x – Xc = -(y –Yc)
把x = Xa代入bc的方程,可以得到
Xb = Xa;
Yb = Xc – Xa + Yc;
算出了a、b、c的坐标,就可以用程序来绘制封闭路径,大概算法如下,
Path path = new Path();
Path.reset();
Path.arcTo(0, 0, w, h, alpha – 90, 43)
Path.lineTo(Xb,Yb)
Path.close();
最后,把得到的路径相对圆心作8次45度旋转,完成绘制。
For(i=0; i<8; i++) {
Canvas.drawPath(path, mPaint);
Canvas.rotate(45, w / 2, y / 2);
}- 一则通过Android Canvas动态绘制图形的实例介绍
- Android Canvas 图形绘制
- Canvas基础图形的绘制
- Html5实例: <canvas>绘制渐变图形
- Android中使用Canvas绘制简单的图形(一)
- 【实例】html5-canvas通过鼠标绘制线段
- android canvas paint绘制相关图形
- Android Canvas and Drawables (android 图形绘制 canvas 和 Drawables)
- android 动态绘制各种图形
- Android中使用Canvas绘制简单的图形(二) 进阶 绘制钟表
- 使用 HTML5 canvas 绘制精美的图形
- 使用 HTML5 canvas 绘制精美的图形
- Canvas----绘制常用的基本图形
- Android-使用OpengGL实现的Canvas进行绘制(简单介绍)
- canvas 绘制图形1
- canvas 绘制图形2
- Canvas绘制图形
- canvas绘制基本图形
- 使用exe.4j将jar包打包为exe文件
- vue基础--自定义指令
- CSDN Markdown页面示例
- 年底别慌,没跳好槽的你还能做这些
- c语言练习题
- 一则通过Android Canvas动态绘制图形的实例介绍
- 从今天开始,每天稳定博客,学习网络安全
- 安卓7.0 状态栏分析 01----> 信号栏更新
- SDN之旅—mininet(在Windows系统上)安装
- IIS请求筛选模块被配置为拒绝包含双重转义序列的请求404.11
- 目标跟踪方法总结
- python学习过程
- 如何修改网页小图标,浏览器页面上的图标。
- ubuntu 安装redis两种方式 教程