问题标签 [skia]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android (2D) Canvas 绘图管道的各个部分如何组合在一起?
我想更好地了解 Android (2D) Canvas 绘图管道的组件如何组合在一起。
例如,XferMode、Shader、MaskFilter和ColorFilter是如何交互的?这些类的参考文档非常少,Canvas和Paint的文档并没有真正添加任何有用的解释。
我也不完全清楚具有固有颜色的绘图操作(例如:drawBitmap
,与“矢量”原语如drawRect
)如何适应所有这些 - 他们总是忽略Paint
's 颜色并使用它们的固有颜色代替吗?
我也很惊讶一个人可以做这样的事情:
这会擦除一个椭圆。在我注意到这一点之前,我的心智模型是绘制到画布(概念上)绘制到单独的“层”,然后使用 Paint 的传输模式与 Canvas 的位图组合该层。如果它像那样简单,那么上面的代码将擦除整个位图(在剪辑区域内),因为 CLEAR总是将颜色(和 alpha)设置为 0,而不考虑源的 alpha。所以这意味着有一种额外的掩蔽将擦除限制为椭圆形。
我确实找到了API 演示,但每个演示都“在真空中”工作,并且没有显示它关注的东西(例如:XferModes)如何与其他东西(例如:ColorFilters)交互。
通过足够的时间和精力,我可以凭经验弄清楚这些部分是如何关联的,或者去破译来源,但我希望其他人已经解决了这个问题,或者更好的是有一些关于管道/绘图模型的实际文档我错过了。
这个问题的灵感来自于看到另一个 SO question 的答案中的代码。
更新
在四处寻找一些文档时,我突然想到,由于我在这里感兴趣的很多东西似乎是在skia之上的一个非常薄的单板,也许有一些 skia 文档会有所帮助。我能找到的最好的东西是文档,SkPaint
其中说:
有 6 种类型的效果可以分配给绘画:
- SkPathEffect - 在生成 Alpha 蒙版之前修改几何体(路径)(例如虚线)
- SkRasterizer - 组成自定义遮罩层(例如阴影)
- SkMaskFilter - 在着色和绘制之前修改 alpha 蒙版(例如模糊、浮雕)
- SkShader - 例如渐变(线性、径向、扫描)、位图图案(钳位、重复、镜像)
- SkColorFilter - 在应用 xfermode 之前修改源颜色(例如颜色矩阵)
- SkXfermode - 例如 porter-duff 传输模式、混合模式
它没有明确说明,但我猜这里的效果顺序是它们出现在管道中的顺序。
android - 如何在 Android Canvas 中使用“倒置”绘画进行绘制?
我在画布上画了一些东西,我想用倒色画一个圆圈:
如何将myPaint
圆形像素配置为底层像素的反色?
谢谢
android - 在 Android NDK 中使用 Skia
android.graphics.* 依赖于原生的 Skia 库是真的吗?如果是这样,是否可以在我的本机 C/C++ 代码中访问 Skia 库?
skia - 想在 Ubuntu 上使用 Skia 学习图形
我想学习图形编程,我想使用 Skia 作为库。我如何在 Ubuntu 上开始使用它?
android - 尝试在 Cygwin 下的 Android 树中编译 Skia
我正在尝试在 Cygwin 下的 Android 树中编译 Skia,但我收到以下错误消息:
是不是因为 GCC 不支持 ARMv7-A?
android - Android - 图像的skia解码错误
我一直在尝试如下解码图像:
虽然我得到了一张图片,但它没有被解码并抛出这个错误:
09-29 11:27:38.675:调试/skia(14907):---解码器->解码返回假
我正在关注处理skia错误的这段代码: http ://code.google.com/p/shelves/source/browse/trunk/Shelves/src/org/curiouscreature/android/shelves/util/ImageUtilities.java
但这并不能解决问题。
有人可以帮忙吗?
android - Android Skia 远程表面
嗨,我正在研究将“未渲染”渲染调用从 Android 传输到第二个屏幕的可能性。在研究过程中,我发现 Skia 是 Surfacefinger 和 Canvas.draw() 方法的幕后推手。所以我现在的问题是,将呼叫分支以便将它们用于第二个屏幕/机器的最佳拦截点是什么。第二个设备不能是纯回放设备,但可以是另一个 Android 设备。
首先我使用 VNC 来实现这个概念,但很快发现它的性能很差,由于双缓冲效果,也可以在某种意义上操纵 android 代码,它省略了双缓冲,但仍然有兴趣实际上在第二个可能缩放的设备上使用预渲染的调用。
谢谢
2d - SkPicture 有多强大?
在 Skia 中,如果我将某些内容记录到 SkPicture 中,是否可以保证保留所有必要的内存?IE
在任何情况下我可以删除导致 drawPicture() 崩溃的东西,或者它总是保证工作?
android - 是否有 Android Skia logcat 输出的文档?
我有时会在 logcat 中收到此消息:
我不知道这意味着什么。谷歌搜索它发现了一个 C++ 文件,它大概代表了位图工厂的一个实例:
通读 C++ 文件会很有趣,但是是否有一些关于这些消息可能意味着什么的文档?有好几次我不得不追踪奇怪的错误,后来证明 Skia 消息是相关的,或者至少看起来它们可能是相关的。
java - BitmapRegionDecoder 的极限思考
最近我开始遇到 BitmapRegionDecoder 的内存问题。奇怪,是的,因为它设计为只读取部分,而我想要的那些部分通常是 100-200 像素 x 100-200 像素。
我的问题是:可以与 BitmapRegionDecoder 一起使用的图像大小限制在哪里?例如,我遇到了 50,000x30,000 JPEG 的问题,总大小约为 500 MB。(这是一个高分辨率地图,因此大小。)