AutoJs6

- Overview - 综述
- About - 关于文档
- Progress - 文档部署进度
- Changelog - 文档更新日志

- Manual - AutoJs6 使用手册
- Q & A - 疑难解答

- Global - 全局对象
- Automator - 自动化
- AutoJs6 - 本体应用
- App - 通用应用
- Color - 颜色
- Image - 图像
- OCR - 光学字符识别
- Barcode - 条码
- QR Code - 二维码
- Keys - 按键
- Device - 设备
- Storage - 储存
- File - 文件
- Engine - 引擎
- Task - 任务
- Module - 模块
- Plugins - 插件
- Toast - 消息浮动框
- Notice - 消息通知
- Console - 控制台
- Shell
- Shizuku
- Media - 多媒体
- Sensor - 传感器
- Recorder - 记录器
- Timer - 定时器
- Thread - 线程
- Continuation - 协程
- Event - 事件监听
- Dialog - 对话框
- Floaty - 悬浮窗
- Canvas - 画布
- UI - 用户界面
- Web - 万维网
- HTTP
- Base64
- Crypto - 密文
- Internationalization - 国际化
- Standardization - 标准化
- E4X

- UiSelector - 选择器
- UiObject - 控件节点
- UiObjectCollection - 控件集合
- UiObjectActions - 控件节点行为
- WebSocket
- EventEmitter - 事件发射器
- ImageWrapper - 包装图像类
- App - 应用枚举类
- Color - 颜色类
- Version - 版本工具类
- Polyfill - 代码填泥
- Arrayx - Array 扩展
- Numberx - Number 扩展
- Mathx - Math 扩展

- Exceptions - 异常
- Intent - 意图
- Runtime - 运行时
- Context - 上下文
- Activity - 活动

- Scripting Java - 脚本化 Java
- Android API Level - 安卓 API 级别
- Color Table - 颜色列表

- Glossaries - 术语
- HttpHeader - HTTP 标头
- HttpRequestMethods - HTTP 请求方法
- MimeType - MIME 类型
- NotificationChannel - 通知渠道

- Data Types - 数据类型
- Omnipotent Types - 全能类型
- Storage - 存储类
- AndroidBundle
- AndroidRect
- CryptoCipherOptions
- CryptoKey
- CryptoKeyPair
- ConsoleBuildOptions
- HttpRequestBuilderOptions
- HttpRequestHeaders
- HttpResponseBody
- HttpResponseHeaders
- HttpResponse
- InjectableWebClient
- InjectableWebView
- NoticeOptions
- NoticeChannelOptions
- NoticePresetConfiguration
- NoticeBuilder
- Okhttp3HttpUrl
- OcrOptions
- Okhttp3Request
- OpencvPoint
- OpencvRect
- OpencvSize

- GitHub - 应用项目地址
- GitHub - 文档项目地址

# 画布 (Canvas)#

此章节待补充或完善...

Marked by SuperMonster003 on Oct 22, 2022.

canvas提供了使用画布进行2D画图的支持, 可用于简单的小游戏开发或者图片编辑. 使用canvas可以轻松地在一张图片或一个界面上绘制各种线与图形.

canvas的坐标系为平面直角坐标系, 以控件左上角为原点, 控件上边沿为x轴正方向, 控件左边沿为y轴正方向. 例如分辨率为1920*1080的屏幕上, canvas控件覆盖全屏, 画一条从屏幕左上角到屏幕右下角的线段为:

    canvas.drawLine(0, 0, 1080, 1920, paint);

canvas的绘制依赖于画笔Paint, 通过设置画笔的粗细、颜色、填充等可以改变绘制出来的图形. 例如绘制一个红色实心正方形为：

    var paint = new Paint();
    //设置画笔为填充, 则绘制出来的图形都是实心的
    paint.setStyle(Paint.STYLE.FILL);
    //设置画笔颜色为红色
    paint.setColor(colors.RED);
    //绘制一个从坐标(0, 0)到坐标(100, 100)的正方形
    canvas.drawRect(0, 0, 100, 100, paint);

如果要绘制正方形的边框, 则通过设置画笔的Style来实现：

    var paint = new Paint();
    //设置画笔为描边, 则绘制出来的图形都是轮廓
    paint.setStyle(Paint.STYLE.STROKE);
    //设置画笔颜色为红色
    paint.setColor(colors.RED);
    //绘制一个从坐标(0, 0)到坐标(100, 100)的正方形
    canvas.drawRect(0, 0, 100, 100, paint);

结合画笔, canvas可以绘制基本图形、图片等.

## canvas.getWidth()#

- 返回 { number }

返回画布当前图层的宽度.

## canvas.getHeight()#

- 返回 { number }

返回画布当前图层的高度.

## canvas.drawRGB(r, int g, int b)#

- `r` { number } 红色通道值
- `g` { number } 绿色通道值
- `b` { number } 蓝色通道值

将整个可绘制区域填充为r、g、b指定的颜色. 相当于 `canvas.drawColor(colors.rgb(r, g, b))`.

## canvas.drawARGB(a, r, g, b)#

- `a` { number } 透明通道值
- `r` { number } 红色通道值
- `g` { number } 绿色通道值
- `b` { number } 蓝色通道值

将整个可绘制区域填充为a、r、g、b指定的颜色. 相当于 `canvas.drawColor(colors.argb(a, r, g, b))`.

## canvas.drawColor(color)#

- `color` { number } 颜色值

将整个可绘制区域填充为color指定的颜色.

## canvas.drawColor(color, mode)#

- `color` { number } 颜色值
- `mode` { PorterDuff.Mode } Porter-Duff操作

将整个可绘制区域填充为color指定的颜色.

## canvas.drawPaint(paint)#

- `paint` { Paint } 画笔

将整个可绘制区域用paint指定的画笔填充. 相当于绘制一个无限大的矩形, 但是更快. 通过该方法可以绘制一个指定的着色器的图案.

## canvas.drawPoint(x, y, paint)#

- `x` { number } x坐标
- `y` { number } y坐标
- `paint` { Paint } 画笔

在可绘制区域绘制由坐标(x, y)指定的点. 点的形状由画笔的线帽决定（参见paint.setStrokeCap(cap)）. 点的大小由画笔的宽度决定（参见paint.setStrokeWidth(width)）.

> 如果画笔宽度为0, 则也会绘制1个像素至4个（若抗锯齿启用）.

相当于 `canvas.drawPoints([x, y], paint)`.

## canvas.drawPoints(pts, paint)#

- `pts` { Array } 点坐标数组 [x0, y0, x1, y1, x2, y2, ...]
- `paint` { Paint } 画笔

在可绘制区域绘制由坐标数组指定的多个点.

## canvas.drawLine(startX, startY, stopX, stopY, paint)#

- `startX` { number } 起点x坐标
- `startY` { number } 起点y坐标
- `endX` { number } 终点x坐标
- `endY` { number } 终点y坐标
- `paint` { Paint } 画笔

在可绘制区域绘制由起点坐标(startX, startY)和终点坐标(endX, endY)指定的线. 绘制时会忽略画笔的样式(Style). 也就是说, 即使样式设为“仅填充(FILL)”也会绘制. 退化为点的线（长度为0）不会被绘制.

## canvas.drawRect(r, paint)#

- `r` { Rect } 矩形边界
- `paint` { Paint } 画笔

在可绘制区域绘制由矩形边界r指定的矩形. 绘制时画笔的样式(Style)决定了是否绘制矩形界线和填充矩形.

## canvas.drawRect(left, top, right, bottom, android.graphics.Paint paint)#

- `left` { number } 矩形左边界x坐标
- `top` { number } 矩形上边界y坐标
- `right` { number } 矩形右边界x坐标
- `bottom` { number } 矩形下边界y坐标
- `paint` { Paint } 画笔

在可绘制区域绘制由矩形边界(left, top, right, bottom)指定的矩形. 绘制时画笔的样式(Style)决定了是否绘制矩形界线和填充矩形.

## canvas.drawOval(android.graphics.RectF oval, android.graphics.Paint paint)#

## canvas.drawOval(float left, float top, float right, float bottom, android.graphics.Paint paint)#

## canvas.drawCircle(float cx, float cy, float radius, android.graphics.Paint paint)#

## canvas.drawArc(android.graphics.RectF oval, float startAngle, float sweepAngle, boolean useCenter, android.graphics.Paint paint)#

## canvas.drawArc(float left, float top, float right, float bottom, float startAngle, float sweepAngle, boolean useCenter, android.graphics.Paint paint)#

## canvas.drawRoundRect(android.graphics.RectF rect, float rx, float ry, android.graphics.Paint paint)#

## canvas.drawRoundRect(float left, float top, float right, float bottom, float rx, float ry, android.graphics.Paint paint)#

## canvas.drawPath(android.graphics.Path path, android.graphics.Paint paint)#

## canvas.drawBitmap(android.graphics.Bitmap bitmap, float left, float top, android.graphics.Paint paint)#

## canvas.drawText(java.lang.String text, float x, float y, android.graphics.Paint paint)#

## canvas.drawTextOnPath(java.lang.String text, android.graphics.Path path, float hOffset, float vOffset, android.graphics.Paint paint)#

## canvas.translate(dx, dy)#

- `dx` { number } 向x轴正方向平移的距离, 负数表示反方向平移
- `dy` { number } 向y轴正方向平移的距离, 负数表示反方向平移

平移指定距离.

## canvas.scale(sx, sy)#

- `sx` { number } 向x轴正方向平移的距离, 负数表示反方向平移
- `sy` { number } 向y轴正方向平移的距离, 负数表示反方向平移

以原点为中心, 将坐标系平移缩放指定倍数.

## canvas.scale(float sx, float sy, float px, float py)#

## canvas.rotate(float degrees)#

## canvas.rotate(float degrees, float px, float py)#

## canvas.skew(float sx, float sy)#

# 画笔#

# 变换矩阵#

# 路径#

# Porter-Duff操作#

# 着色器#

# 遮罩过滤器#

# 颜色过滤器#

# 路径特效#

# 区域#