Android——canvas绘图疑惑

标签 android touch draw paint

我正在查看来自 Google 的示例应用程序之一,它使用 Canvas 处理触摸绘图:

http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/TouchPaint.html

我有几个疑问:

  1. 我无法理解 Canvas 的作用与作用 的位图。

  2. 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/

相关文章:

android - android中如何解析含有特殊字符的json对象

android - 后退按钮上的刷新 Activity

android - Gradle给我写AAPT错误

javascript - Touchend 第二次在 touchstart 上触发

java - 画线,圈任何东西(Java)

Android绘制路径

java - Eclipse 不会在模拟器中启动 android 应用程序

objective-c - 从 TOP/BOTTOM 检测触摸

javascript - 在 Chrome OS 中检测 "Tablet"模式转换的事件?

algorithm - 以不同角度绘制像素化线