码迷,mamicode.com
首页 > 其他好文 > 详细

Paint、Canvas.2

时间:2017-09-08 16:18:47      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:can   tco   for   line   drawtext   传参   round   awl   color   

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


    }
View Code

 

Paint、Canvas.2

标签:can   tco   for   line   drawtext   传参   round   awl   color   

原文地址:http://www.cnblogs.com/galibujianbusana/p/7494931.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!