1:使用Cavans画个简单图形

2:过程

  2.1:绘制最外部的圆

  

       /*** 初始化 paint */
Paint paint;
paint = new Paint();
paint.setColor(Color.BLACK);
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeCap(Paint.Cap.ROUND);
paint.setStrokeWidth(3);
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.STROKE);
/*** 画圆 圆心,200,200,半径为100 */
canvas.drawCircle(startX,startY,100,paint);
canvas.save();

  2.2:绘制文字made in china

  

       /**** drawtextOnPath 绘制文字 */
paint.setTextSize(16);
Path path=new Path();
path.addArc(130,130,280,280,-130,130);
paint.setTextSize(14);
paint.setStrokeWidth(1);
paint.setColor(Color.GRAY);
canvas.drawTextOnPath("made in china",path ,10,10,paint);
canvas.save();

  2.3:绘制表盘指针

  

       /*** 绘制中心点圆心*/
paint.setStyle(Paint.Style.FILL);
canvas.drawCircle(200,200,10,paint);
canvas.save();
/*** 绘制红色线段,充当 秒针 */
paint.setColor(Color.RED);
canvas.drawLine(200,200,200,130,paint);
canvas.save();
/*** 绘制黑色线段,充当分针 */
paint.setColor(Color.BLACK);
paint.setStrokeWidth(3);
canvas.drawLine(200,200,160,240,paint);
canvas.save();
/*** 绘制黑色线段,充当时针 */
paint.setColor(Color.BLACK);
paint.setStrokeWidth(5);
canvas.drawLine(200,200,240,200,paint);
canvas.save();

  2.4:绘制表盘刻度

  

 /*** 画表盘刻度  ****/
Paint timePaint = new Paint(paint);
timePaint.setStrokeWidth(1);
timePaint.setColor(Color.BLACK);
paint.setColor(Color.BLACK);
paint.setStrokeWidth(3);
int count=60;
for(int i=0;i<=count;i++){
if(i % 5==0){
/*** 整点刻度 */
canvas.drawLine(200, 100, 200, 108, paint);
if(i!=0){
canvas.drawText(String.valueOf(i / 5), 195, 124, timePaint);
}
}else{
/*** 小刻度 */
canvas.drawLine(200, 100, 200, 106, timePaint);
}
/*** 旋转坐标系 */
canvas.rotate(360 / count, 200, 200);
}

3:完成绘制。

 /***示例中是传参是200,200,表示的表盘的中心点*/
private void drawDialPlate(Canvas canvas, int startX, int startY){
canvas.save();
/*** 初始化 paint */
Paint paint;
paint = new Paint();
paint.setColor(Color.BLACK);
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeCap(Paint.Cap.ROUND);
paint.setStrokeWidth(3);
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.STROKE);
/*** 画圆 圆心,200,200,半径为100 */
canvas.drawCircle(startX,startY,100,paint);
canvas.save(); /**** drawtextOnPath 绘制文字 */
paint.setTextSize(16);
Path path=new Path();
path.addArc(130,130,280,280,-130,130);
paint.setTextSize(14);
paint.setStrokeWidth(1);
paint.setColor(Color.GRAY);
canvas.drawTextOnPath("made in china",path ,10,10,paint);
canvas.save(); /*** 绘制中心点圆心*/
paint.setStyle(Paint.Style.FILL);
canvas.drawCircle(200,200,10,paint);
canvas.save();
/*** 绘制红色线段,充当 秒针 */
paint.setColor(Color.RED);
canvas.drawLine(200,200,200,130,paint);
canvas.save();
/*** 绘制黑色线段,充当分针 */
paint.setColor(Color.BLACK);
paint.setStrokeWidth(3);
canvas.drawLine(200,200,160,240,paint);
canvas.save();
/*** 绘制黑色线段,充当时针 */
paint.setColor(Color.BLACK);
paint.setStrokeWidth(5);
canvas.drawLine(200,200,240,200,paint);
canvas.save(); /*** 画表盘刻度 ****/
Paint timePaint = new Paint(paint);
timePaint.setStrokeWidth(1);
timePaint.setColor(Color.BLACK);
paint.setColor(Color.BLACK);
paint.setStrokeWidth(3);
int count=60;
for(int i=0;i<=count;i++){
if(i % 5==0){
/*** 整点刻度 */
canvas.drawLine(200, 100, 200, 108, paint);
if(i!=0){
canvas.drawText(String.valueOf(i / 5), 195, 124, timePaint);
}
}else{
/*** 小刻度 */
canvas.drawLine(200, 100, 200, 106, timePaint);
}
/*** 旋转坐标系 */
canvas.rotate(360 / count, 200, 200);
} }

Paint、Canvas.2的更多相关文章

  1. Android Paint、Canvas、Matrix使用讲解(一、Paint)

    http://blog.csdn.net/tianjian4592/article/details/44336949 好了,前面主要讲了Animation,Animator 的使用,以及桌面火箭效果和 ...

  2. Paint、Canvas、Matrix使用解说(一、Paint)

    username=tianjian4592">我正在參加 CSDN 2015博客之星评选 感恩分享活动,假设认为文章还不错,请投个票鼓舞下吧:http://vote.blog.csdn ...

  3. Paint、Canvas

    1.Canvas类 public class Canvas { public static final int ALL_SAVE_FLAG = 31; /** @deprecated */ @Depr ...

  4. Paint、Canvas.1

    Canvas 方法详解 1:translate(float dx, float dy) /**** 移动canvas的原点到(dx,dy),默认为(0,0) */ public void transl ...

  5. 安卓自定义控件(一)Canvas、Paint、Shader、Xfermode

    关于自定义控件,之前就写过一篇自定义控件,上图下字的Button,图片任意指定大小,但是使用效果还是让人感觉不幸福,这次索性彻彻底底地对自定义控件做一次彻彻底底的总结. 我会花4篇博客来介绍自定义控件 ...

  6. Android学习记录:Paint,Canvas和Bitmap

    在Java中,利用过双缓冲技术,先将画笔画在内存上,再转化为图片,调出来. 当画的东西过多造成处理不过来时,双缓冲技术将防止闪屏. 在Paint方法下,我们这样写: BufferedImage tmp ...

  7. 环形进度条的实现方法总结和动态时钟绘制(CSS3、SVG、Canvas)

    缘由: 在某一个游戏公司的笔试中,最后一道大题是,“用CSS3实现根据动态显示时间和环形进度[效果如下图所示],且每个圆环的颜色不一样,不需要考虑IE6~8的兼容性”.当时第一想法是用SVG,因为SV ...

  8. [Web 前端] VML、SVG、Canvas简介

    1.VML: VML的全称是Vector Markup Language(矢量可标记语言),矢量的图形,意味着图形可以任意放大缩小而不损失图形的质量,这在制作地图上有很大用途,VML只是被IE支持. ...

  9. VML、SVG、Canvas简介

    1.VML: VML的全称是Vector Markup Language(矢量可标记语言),矢量的图形,意味着图形可以任意放大缩小而不损失图形的质量,这在制作地图上有很大用途,VML只是被IE支持. ...

随机推荐

  1. idea+MAVEN项目

    一.首先创建一个maven项目 1.依次点击:File->New->Project 2.左侧面板选择maven(不要选择Create from archetype选项),如下图,点击Nex ...

  2. [luogu4478 BJWC2018] 上学路线 (容斥原理+拓展lucas)

    传送门 Description 小B 所在的城市的道路构成了一个方形网格,它的西南角为(0,0),东北角为(N,M). 小B 家住在西南角,学校在东北角.现在有T 个路口进行施工,小B 不能通过这些路 ...

  3. 快速上手Linux 玩转典型应用_慕课网笔记

    1.没有exe安装程序 2.区分大小写 3.一切皆文件 4.文件后缀不是那么重要,只是为了好识别 -------------------------------------------------- ...

  4. orcale 单行函数之数字函数, 日期函数

    日期函数: 案例:

  5. ACDream - Graphs

    先上题目: Graphs Time Limit: 4000/2000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Submit ...

  6. 使用Neo4j和简单分词算法实现菜品推荐系统

    背景:本推荐系统基于一款硬件产品--旺小宝桌牌.客人按下点餐按钮,扫码进入点餐界面,然后开始点自己喜欢的菜,在手机端下单.目前在成都已有近200家合作餐饮商家. 菜品推荐功能: 当客人在某商家使用桌牌 ...

  7. 【ACM】hdu_1095_A+BVII_201307261740

    A+B for Input-Output Practice (VII)Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/327 ...

  8. [bzoj3209]花神的数论题_数位dp

    花神的数论题 bzoj-3209 题目大意:sum(i)表示i的二进制表示中1的个数,求$\prod\limits_{i=1}^n sum(i)$ 注释:$1\le n\le 10^{15}$. 想法 ...

  9. 第三篇:SpringBoot - 数据库结构版本管理与迁移

    SpringBoot支持了两种数据库结构版本管理与迁移,一个是flyway,一个是liquibase.其本身也支持sql script,在初始化数据源之后执行指定的脚本,本章是基于 Liquibase ...

  10. jquery非文本框复制

    function selectText(x) { if (document.selection) { var range = document.body.createTextRange();//ie ...