autojs之十二圆

简介: 使用情景给孩子画个圆

使用情景


给孩子画个圆


效果展示



autojs版本号

微信图片_20220624174106.png


原理


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


  1. 布局
ui.layout(
  <vertical>
    <canvas id="board" w="*" h="*"></canvas>
  </vertical>
);
  1. 等界面加载完毕, 再开始画圆
setTimeout(draw, 100);


  1. 初始化参数
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;


  1. 启用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);
  });
}


  1. 设置背景
canvas.drawARGB(255, 123, 104, 238);


  1. 画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);
}











相关文章
autojs帮我使用这个命令画圆
autojs帮我使用这个命令画圆
|
7月前
|
定位技术 C# 图形学
Unity和C#游戏编程入门:创建迷宫小球游戏示例
Unity和C#游戏编程入门:创建迷宫小球游戏示例
158 2
|
7月前
代码随想录Day51 完结篇 LeetCode T84 柱状图的最大矩形
代码随想录Day51 完结篇 LeetCode T84 柱状图的最大矩形
41 0
|
7月前
AutoJS4.1.0实战教程 ---闪电盒子极速版
AutoJS4.1.0实战教程 ---闪电盒子极速版
57 0
|
7月前
|
XML Java Android开发
Android App开发手机阅读中贝塞尔曲线的原理讲解及实现波浪起伏动画实战(附源码和演示视频 可直接使用)
Android App开发手机阅读中贝塞尔曲线的原理讲解及实现波浪起伏动画实战(附源码和演示视频 可直接使用)
135 0
|
前端开发 JavaScript Android开发
autojs画六边形
我们一组一组的计算六边形中心点, 一组有两排六边形: 第一排5个 第二排4个 下一组, 往下移动 3 个边长, 因为第一组, 我们已经检查过画板右侧
160 0
autojs画六边形
|
JavaScript 测试技术 Android开发
|
JavaScript Java Android开发
autojs颜色渐变效果
牙叔教程 简单易学 使用场景 颜色渐变
217 0
|
C# 图形学
Unity零基础到进阶 ✨ 使用 Vectrosity 插件 像德芙一样丝滑的画线
Vectrosity画线插件 ☀️ Unity画线插件Vectrosity 🔥 在使用Unity进行开发的过程中,我们在某些时候需要使用到划线功能,使用Unity中的几种划线方法自然可行,但是我们可以用一种更方便的方式来进行划线操作,那就是我们的主角:Vectrosity插件👍!
Unity零基础到进阶 ✨ 使用 Vectrosity 插件 像德芙一样丝滑的画线