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
    今天多一点积累,明天少一分烦恼
  • 相关阅读:
    Mysql模糊查询 select count(*) from sys_invitation where from_id like '%1006%';
    java 结束程序进程 代码
    [解决问题]selenium.remote.UnreachableBrowserException 异常分析并解决问题
    【解决问题】failed: java.lang.RuntimeException: org.openqa.selenium.WebDriverException: Unexpected error launching Internet Explorer.
    linux下nginx部署以及配置详解
    Linux系统下安装jdk及环境配置(两种方法)
    linux服务器同时运行两个或多个tomcat
    linux配置环境jdk
    mysql修改后启动my.cnf报错Starting MySQL... ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).
    mysql执行出错:Table 'k_user' is read only
  • 原文地址:https://www.cnblogs.com/galibujianbusana/p/7494931.html
Copyright © 2011-2022 走看看