Skia 和 Android Paint 绘图对象及其使用或文档

Posted

技术标签:

【中文标题】Skia 和 Android Paint 绘图对象及其使用或文档【英文标题】:Skia and Android Paint drawing objects and their use or documentation 【发布时间】:2010-02-08 18:43:00 【问题描述】:

有谁知道 android 使用的 Skia 绘图库的良好文档?

主 Canvas 对象几乎没有任何状态,所以我特别考虑可以嵌入到 Paint 对象中的对象。我已经通过反复试验研究了如何使用一些 ColorFilters 并使用 ColorMatrixColorFilter 制作了很酷的效果。现在我也有了我想要的 LinearGradient 着色器的阴影。我想我了解 PathEffects 并对 XferModes 有一些想法。 MaskFilters 和 Rasterizers 对我来说仍然完全不透明。但反复试验并不是理解复杂库的好方法。

我主要担心的是 Android 文档根本没有讨论 2d 图形及其使用方法。甚至类 javadocs 也经常不解释该类在做什么。实际功能都在 Skia C 代码中,我可以得到,但它也缺少文档。我看过一些很酷的演示,但 Google 很少解释它们是如何完成的。

理解这些东西的唯一方法是实验和阅读 C 代码吗?效率和最佳实践如何? Davlik/Android VM 对内存分配很敏感,有时速度很慢,我担心我没有以最好的方式做事。

【问题讨论】:

【参考方案1】:

Skia 有自己的 google 代码项目站点,您可以在其中找到一些高级概述。

可以通过项目站点中的此链接浏览内联文档

http://skia.googlecode.com/svn/trunk/docs/html/hierarchy.html

您可以加入讨论邮件列表。设计师和社区将回答问题。

另一个很好的参考是来自 Apple 的令人惊讶的。 Apple QuickDraw GX 文档解释了很多 2D 矢量图形概念,可以很好地应用于 Skia。

【讨论】:

【参考方案2】:

Android canvas API 确实有两个不同的实现,一个是 Skia,另一个是 OpenGL ES。后面的实现就是所谓的 HWUI。

无论实现如何,了解绘制过程底层的管道对于了解如何使用画布 API 至关重要。

以下是迄今为止描述管道的最佳文档。你一定会发现它很有用。

http://www.xenomachina.com/2011/05/androids-2d-canvas-rendering-pipeline.html

【讨论】:

以上是关于Skia 和 Android Paint 绘图对象及其使用或文档的主要内容,如果未能解决你的问题,请参考以下文章

关于skia antialias

Android21.2 Canvas和Paint

Android 2D绘图解析之 Canvas,Paint

skia

Android自己定义View画家(画布)Canvas与画笔Paint的应用——绘图涂鸦板app的实现

Skia往SkBitmap上绘图时画不出来的问题