任何CanvasItem派生节点都可以使用draw来控制绘制和重绘
image.png
但是,Control类控件比如Button使用_draw,并不会覆盖按钮原本的样貌,而是毫不相关的执行绘制指令。
CanvasItem类型的API中提供了很多draw
开头的绘制指令函数
13.png
利用这些绘制指令函数,我们可以绘制很多内容
如果利用更新机制和tool脚本机制,甚至能做出在编辑器使用的动态工具

draw_texture——绘制贴图

我们实践一下官方文档的这个实例
14.png15.png16.png

根据鼠标移动绘制贴图

我们改进一下官方实例的代码
17.png18.png
虽然官方文档没有明说,但是说了update()是“重绘”是“更新”,所以update()每执行一次,都是清除上一次_draw()执行的绘制指令的结果,然后再次顺序调用一遍_draw()里面的绘制指令

如果想要动态效果,只需要设定_draw()里面的绘制指令的参数为动态变化的,并且在_process()或其他时机,调用update()执行重绘

定点绘制圆弧

19.png20.png21.png

一个还不准确的动态圆弧绘制

22.png