zoukankan      html  css  js  c++  java
  • 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);
           }
    
    
        }
    View Code
    今天多一点积累,明天少一分烦恼
  • 相关阅读:
    55.UIbutton点击切换颜色
    54.NSJSONSerialization类进行json解析(字符串“UTF-8解码”)
    53.设置内容的行间距
    第二阶段冲刺7
    第二阶段冲刺6
    第十四周
    第二阶段冲刺5
    第二阶段冲刺4
    第二阶段冲刺3
    第二阶段冲刺2
  • 原文地址:https://www.cnblogs.com/galibujianbusana/p/7494931.html
Copyright © 2011-2022 走看看