gpt4 book ai didi

android - AvoidXferMode 替换 Canvas 上的颜色

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:55:15 25 4
gpt4 key购买 nike

我正在尝试使用 AvoidXferMode 替换在 Canvas 上绘制的内容的颜色.从 android 文档看来,这正是我所需要的:

AvoidXfermode xfermode will draw the src everywhere except on top of the opColor or, depending on the Mode, draw only on top of the opColor.

我正在尝试的是这样的:

Paint paint = new Paint();
paint.setColor(Color.RED);
canvas.drawPaint(paint); // actually drawing a bitmap here
paint.setXferMode(new AvoidXferMode(Color.RED, 0, TARGET);
paint.setColor(Color.GREEN);
canvas.drawPaint(paint);

但是,这只会显示红色屏幕,而不是我预期的绿色(用绿色替换红色)。我想我错过了一些地方......有什么建议吗?

最佳答案

我终于找到了问题所在,这里有一些线索:AvoidXferMode Tolerance但当我读到这篇文章 http://stuffthathappens.com/blog/2010/06/04/android-color-banding/ 时,它真的打动了我 埃里克伯克。容差失败,因为 View Canvas 未处于 8888 模式。

这意味着当您在该 Canvas 上绘制颜色或位图时,颜色会转换为目标像素格式,并且颜色可能会略有变化。要解决此问题,您可以切换整个窗口像素格式,如 Eric 的帖子中所示,或者您可以绘制到 8888 后台缓冲区。

不幸的是,指向 Eric 帖子的链接已失效,但 Roman Guy 在这里也有类似的文章:http://www.curious-creature.org/2010/12/08/bitmap-quality-banding-and-dithering/

关于android - AvoidXferMode 替换 Canvas 上的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2071371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com