From f16b3ad92271b443197da563ee1418d59ff270fb Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Mon, 19 Mar 2018 19:17:06 +0800 Subject: [PATCH] feat: new ui widget `canvas` --- .idea/modules.xml | 2 +- app/src/main/assets/sample/画图/函数图像.js | 24 ----- .../main/assets/sample/画布/函数图像简单版.js | 41 ++++++++ .../main/assets/sample/画布/函数图像高级版.js | 99 +++++++++++++++++++ .../core/graphics/ScriptCanvasView.java | 29 ++++-- .../attrsetter/CanvasViewAttrSetter.java | 2 +- .../engine/LoopBasedJavaScriptEngine.java | 4 + .../autojs/engine/ScriptEngineProxy.java | 4 + .../execution/ScriptExecuteActivity.java | 10 +- 9 files changed, 174 insertions(+), 41 deletions(-) delete mode 100644 app/src/main/assets/sample/画图/函数图像.js create mode 100644 app/src/main/assets/sample/画布/函数图像简单版.js create mode 100644 app/src/main/assets/sample/画布/函数图像高级版.js diff --git a/.idea/modules.xml b/.idea/modules.xml index 4fac18b4..7e950955 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,8 +2,8 @@ + - diff --git a/app/src/main/assets/sample/画图/函数图像.js b/app/src/main/assets/sample/画图/函数图像.js deleted file mode 100644 index 32082284..00000000 --- a/app/src/main/assets/sample/画图/函数图像.js +++ /dev/null @@ -1,24 +0,0 @@ -"ui"; -ui.layout( - - - -); - -var f = function(x){ - return x * x + 3 * x - 4; -} - -var paint = new Paint(); -paint.setStrokeWidth(2); -var start = -5; -var end = 5; - -ui.graphic.on("draw", function(canvas){ - var w = canvas.getWidth(); - for (var i = 0; i < w; i++) { - var x = (end - start) / w * i + start; - var y = f(x); - canvas.drawPoint(x, y, paint); - } -}); \ No newline at end of file diff --git a/app/src/main/assets/sample/画布/函数图像简单版.js b/app/src/main/assets/sample/画布/函数图像简单版.js new file mode 100644 index 00000000..88fa9050 --- /dev/null +++ b/app/src/main/assets/sample/画布/函数图像简单版.js @@ -0,0 +1,41 @@ +"ui"; +//ui布局为一块画布 +ui.layout( + + + +); + +//要绘制的函数,这里是一个一元二次函数 +var f = function(x){ + return x * x + 3 * x - 4; +} + +//绘制区间 +var minX = -5; +var maxX = 5; +var minY = -10; + +//画笔 +var paint = new Paint(); + +ui.board.on("draw", function(canvas){ + var w = canvas.getWidth(); + var h = canvas.getHeight(); + //计算y轴区间上限 + var maxY = minY + (maxX - minX) * h / w; + //设置画笔颜色为黑色 + paint.setColor(colors.parseColor("#000000")); + //绘制两个坐标轴 + canvas.drawLine(w / 2, 0, w / 2, h, paint); + canvas.drawLine(0, h / 2, w, h / 2, paint); + //设置画笔颜色为红色 + paint.setColor(colors.parseColor("#ff0000")); + //绘制图像 + for(var i = 0; i < w; i++){ + var x = minX + i / w * (maxX - minX); + var y = f(x); + var j = h - (y - minY) / (maxY - minY) * h; + canvas.drawPoint(i, j, paint); + } +}); diff --git a/app/src/main/assets/sample/画布/函数图像高级版.js b/app/src/main/assets/sample/画布/函数图像高级版.js new file mode 100644 index 00000000..e2621777 --- /dev/null +++ b/app/src/main/assets/sample/画布/函数图像高级版.js @@ -0,0 +1,99 @@ +"ui"; +//ui布局为一块画布和一些函数调整控件 +ui.layout( + + + +