我正在查看来自 Google 的示例应用程序之一,它使用 Canvas 处理触摸绘图:
我有几个疑问:
我无法理解 Canvas 的作用与作用 的位图。
在
drawPoint
函数中,我无法 理解这段代码:
mCanvas.drawCircle(x, y, radius, mPaint); mRect.set((int) (x - radius - 2), (int) (y - radius - 2), (int) (x + radius + 2), (int) (y + radius + 2)); invalidate(mRect);
如果圆已经绘制到上面的 Canvas 中,那么在给出以下代码的onDraw
函数中会发生什么:
canvas.drawBitmap(mBitmap, 0, 0, null);
最佳答案
Canvas 与位图
A Bitmap
顾名思义:作为位图的普通图像。 Canvas
类是位图的编辑器。你用它来改变位图数据,它拥有所有的绘图方法。此原则的行为类似于共享首选项(如果您已经使用过它们),您有一个保存首选项的 SharedPreferences
类和一个 Editor
改变事物的类。
画圆圈
此代码执行类似于 double buffering 的操作. drawPoint()
基本上是在 mBitmap
对象中绘制一个圆圈¹。 但是这个位图对象还不可见。它存在于内存中。当 onDraw()
被调用时,它有一个 Canvas
参数代 TableView 的绘图表面。 drawBitmap()
在这里所做的就是使用内存中准备好的位图并将其绘制在 View 图形表示中以使其可见。
¹ 使用的 Canvas mCanvas
绑定(bind)到 onSizeChanged()
内的 mBitmap
关于Android——canvas绘图疑惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7697773/