autojs之十二圆

使用情景

 

给孩子画个圆

 

效果展示

 

canvas慢慢画圆

 

 

autojs版本号

 

原理

 

  1. canvas绘制bitmap

  2. 我们在bitmap上 画圆

  3. 画12个圆, 画一个, 画布旋转30度

 

知识点

 

  1. 测量画布宽高的时机

  2. 画笔的参数设置

  3. 生成bitmap

 

  1. 生成canvas

  2. 监听画布的ondraw事件

  3. 设置画布的背景

 

  1. canvas画字

  2. 生成rectf

  3. 生成随机颜色

 

  1. canvas画圆弧

  2. 画布的旋转

 

代码讲解

 

1. 导入类

importClass(android.graphics.RectF);
importClass(android.graphics.Paint);
importClass(android.graphics.Bitmap);

 

2. 布局

ui.layout(
  <vertical>
    <canvas id="board" w="*" h="*"></canvas>
  </vertical>
);

 

3. 等界面加载完毕, 再开始画圆

setTimeout(draw, 100);

 

4.  初始化参数

mPaint = new Paint();
mPaint.setStrokeWidth(10);
var color = "#00ff00";
color = colors.parseColor(color);
mPaint.setColor(color);
mPaint.setStrokeWidth(10); // 设置圆环的宽度
mPaint.setAntiAlias(true); // 消除锯齿
mPaint.setStyle(Paint.Style.STROKE); // 设置空心
let radius = 200;
let mProgress = 0;
let isDrawCircle = true;
let mSpeed = 2;
var bitmap;

 

5. 启用draw方法

function draw() {
  let viewWidth = board.getWidth();
  let viewHeight = board.getHeight();
  bitmap = Bitmap.createBitmap(viewWidth, viewHeight, Bitmap.Config.ARGB_8888);
  var mCanvas = new Canvas(bitmap);
  ui.board.on("draw", function (canvas) {
    canvas.drawBitmap(bitmap, 0, 0, mPaint);
  });
  threads.start(function () {
    画十二个圆形(mCanvas);
  });
}

 

6. 设置背景

canvas.drawARGB(255, 123, 104, 238);

 

7. 画12个圆

for (var i = 0; i < 12; i++) {
  let oval = new RectF(center - radius, center - radius, center + radius, center + radius); // 用于定义的圆弧的形状和大小的界限
  while (1) {
    if (mProgress > 360) {
      mProgress = 0;
      let color = getRandomColor();
      if (启用随机颜色) {
        mPaint.setColor(color);
      }
      break;
    } else {
      canvas.drawArc(oval, 90, mProgress, false, mPaint); // 根据进度画圆弧
      sleep(mSpeed); //通过传递过来的速度参数来决定线程休眠的时间从而达到绘制速度的快慢
    }
    mProgress += 1;
  }
  canvas.rotate(30, center, center + radius);
}

 

点击查看源码

 

 

微信公众号 AutoJsPro教程

 

QQ群

 

747748653

 

 

在 Auto.js 中实现“找”功能,通常涉及图像处理和计算机视觉技术。Auto.js 提供了基础的图像识别能力,可以通过 `images` 模块来实现图像采集、处理以及形状识别等功能。 ### 找的基本实现方法 #### 1. 图像采集 首先需要获取屏幕或指定区域的图像,可以使用 `images.captureScreen()` 或者从文件中加载图像: ```javascript var img = images.captureScreen(); // 截取当前屏幕图像 ``` 如果目标图像是从文件加载,则可以使用: ```javascript var img = images.read("/sdcard/image.png"); ``` #### 2. 图像预处理 为了提高找的准确性,通常需要对图像进行预处理,包括灰度化、二值化、边缘检测等操作: ```javascript // 灰度化 var grayImg = images.grayscale(img); // 边缘检测 var edgeImg = images.canny(grayImg, 50, 150); ``` #### 3. 圆形检测 Auto.js 支持使用霍夫变换(Hough Transform)来检测圆形。通过 `images.houghCircles()` 方法可以查找图像中的圆形: ```javascript var circles = images.houghCircles(edgeImg, 1, 20, 30, 15, 30); // 参数可调 if (circles && circles.length > 0) { for (var i = 0; i < circles.length; i++) { var circle = circles[i]; // 绘制检测到的圆形 canvas.drawCircle(circle.x, circle.y, circle.radius, "#FF0000"); } } ``` 其中参数说明如下: - `image`: 输入的边缘检测图像。 - `dp`: 累加器分辨率与图像分辨率之比。 - `minDist`: 心之间的最小距离。 - `param1`: Canny 边缘检测的高阈值。 - `param2`: 检测算法的累加器阈值。 - `minRadius`: 最小半径。 - `maxRadius`: 最大半径。 #### 4. 可视化结果 可以使用 `canvas` 对象绘制出检测到的圆形,方便调试和验证: ```javascript var canvas = images.createCanvas(img.width, img.height); canvas.drawImage(img, 0, 0); // 上述绘制圆形的代码在此基础上继续执行 ``` ### 注意事项 - **性能优化**:由于图像处理计算量较大,在移动设备上运行时需注意性能瓶颈,建议适当缩小图像尺寸或调整检测频率。 - **参数调整**:不同的图像可能需要调整 `houghCircles` 的参数以获得最佳检测效果。 - **环境依赖**:确保 Auto.js Pro 版本支持相关图像处理函数,部分功能在免费版中可能受限。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牙叔教程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值