android.graphics.Canvas中使用的算法

时间:2015-01-10 01:22:23

标签: android-ndk android-canvas

我正在尝试找出正在使用的绘图算法android.graphics.Canvas,特别是drawLinedrawCircle。我设法找到Canvas_Delegate.java,但我无法理解每种情况下使用的算法。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

总结评论:

  • 至少有两种绘图函数的实现,一种纯粹用软件实现(Skia library),另一种在启用hardware acceleration时使用GPU。

    < / LI>
  • Skia实现是用C ++编写的,而不是Java。由于必须考虑笔画宽度等Paint功能,因此代码可能不会像您找到的classic implementation那样简单。

  • 使用C ++编写时,给定算法的实现通常比使用Java编程语言编写时快得多。这是一个宗教问题,周期性地抛出各种基准来消除“Java缓慢”的概念。我认为C ++更具表现力,允许您更准确地告诉编译器您想要它做什么,而在Android上,特别是NDK C ++编译器明显优于Dalvik或Art编译器。