Paint、Canvas.2

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);
       }

    }

时间: 2024-11-09 03:16:49

Paint、Canvas.2的相关文章

Paint、Canvas、Matrix使用讲解(一、Paint)

好了,前面主要讲了Animation,Animator 的使用,以及桌面火箭效果和水波纹效果,分别使用android框架和自己绘制实现,俗话说,工欲善其事,必先利其器,接下来几篇文章主要讲绘制中我们需要常使用的一些利器: Paint:画笔 Canvas:画布 Matrix:变换矩阵 绘制动效确实就像拿着笔在画布上面画画一样,而Paint就是我们拿着的笔,Canvas就是使用的画布: 一.Paint(画笔) 根据我们要画的类型,我们可以选择不同的笔,比如大气磅礴的山水画,我们可以选择大头的毛笔:细

Android的Paint、Canvas和Matrix讲解

Paint类介绍 Paint即画笔,在绘图过程中起到了极其重要的作用,画笔主要保存了颜色, 样式等绘制信息,指定了如何绘制文本和图形,画笔对象有很多设置方法,大体上可以分为两类,一类与图形绘制相关,一类与文本绘制相关. 1.图形绘制 setARGB(int a,int r,int g,int b); 设置绘制的颜色,a代表透明度,r,g,b代表颜色值. setAlpha(int a); 设置绘制图形的透明度. setColor(int color); 设置绘制的颜色,使用颜色值来表示,该颜色值包

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

http://blog.csdn.net/tianjian4592/article/details/44336949 好了,前面主要讲了Animation,Animator 的使用,以及桌面火箭效果和水波纹效果,分别使用android框架和自己绘制实现,俗话说,工欲善其事,必先利其器,接下来几篇文章主要讲绘制中我们需要常使用的一些利器: Paint:画笔 Canvas:画布 Matrix:变换矩阵 绘制动效确实就像拿着笔在画布上面画画一样,而Paint就是我们拿着的笔,Canvas就是使用的画布

Paint、Canvas.1

Canvas 方法详解 1:translate(float dx, float dy) /**** 移动canvas的原点到(dx,dy),默认为(0,0) */ public void translate(float dx, float dy); canvas.drawRect(0,0,300,200,rectPaint); canvas.translate(300,200); canvas.drawRect(0,0,400,400,rectPaint1); 图: 2:clipRect方法 该

Android--Drawable、Bitmap、Canvas和Paint的关系

Drawable.Bitmap.Canvas和Paint 除了Drawable外早在Sun的J2ME中就已经出现了,但是在Android平台中,Bitmap.Canvas相关的都有所变化. 首先让我们理解下Android平台中的显示类是View,但是还提供了底层图形类android.graphics,今天所说的这些均为graphics底层图形接口. (1)Bitmap - 称作位图,一般位图的文件格式后缀为bmp,当然编码器也有很多如RGB565.RGB888.作为一种逐像素的显示对象执行效率高

Canvas、Paint、Path

canvas是依附于view的画布. Paint代表canvas上的画笔,主要用于绘制风格(画笔颜色.画笔粗细.填充风格). paint常用属性: 分为两类:图形绘制相关,文本绘制相关 1.图形绘制 setARGB(int a,int r,int g,int b); 设置绘制的颜色,a代表透明度,r,g,b代表颜色值. setAlpha(int a); 设置绘制图形的透明度. setColor(int color); 设置绘制的颜色,使用颜色值来表示,该颜色值包括透明度和RGB颜色. setAn

Drawable、Bitmap、Canvas和Paint的关系以及部分使用方法

刚刚开始学习Android平台,对于Drawable.Bitmap.Canvas和Paint它们之间的概念不是很清楚,其实它们除了Drawable外早在Sun的J2ME中就已经出现了,但是在Android平台中,Bitmap.Canvas相关的都有所变化. 首先让我们理解下Android平台中的显示类是View,但是还提供了底层图形类android.graphics,今天所说的这些均为graphics底层图形接口. Bitmap - 称作位图,一般位图的文件格式后缀为bmp,当然编码器也有很多如

24.Android之Paint和canvas简单应用学习

在Android中需要通过graphics类来显示2D图形,graphics中包括了Canvas(画布).Paint(画笔).Color(颜色).Bitmap(图像)等常用的类.graphics具有绘制点.线.颜色.2D几何图形.图像处理等功能. 1.Paint(画笔)类 要绘制图形,首先得调整画笔,按照自己的开发需要设置画笔的相关属性.Pain类的常用属性设置方法如下: setAntiAlias(); //设置画笔的锯齿效果 setColor(); //设置画笔的颜色 setARGB(); /

Paint和canvas的用法

项目中各种自定义控件,用到paint和canvas的地方非常多,所以就总结了下paint和canvas的用法,如有错误欢迎大家批评指正 一.paint类讲解 首先paint类是在graphics类下面的 它的继承关系如下 paint类是android提供的绘图的一个工具类即画笔工具,它在绘图中有极其重要的作用,画笔工具主要指定如何绘制我们所需要的图形,如图形的颜色.样式等.画笔对象有很多设置方法,大体上可以分为两类 (1)与图形绘制相关 (2)与文本绘制相关 1.图形绘制 setARGB(int