gpt4 book ai didi

android - Android Canvas 上的 Drawable 可以禁用抗锯齿功能吗?

转载 作者:太空狗 更新时间:2023-10-29 16:43:15 26 4
gpt4 key购买 nike

在我的程序中,我正在尝试绘制像素艺术并且不希望发生抗锯齿。我找到了为 Bitmaps 禁用抗锯齿的方法和 DrawableBitmaps但不适用于 Drawables .是否无法为 Drawable 禁用抗锯齿?

我尝试了以下方法:

drawable.setDither(false);
drawable.setFilterBitmap(false);

按照 vmironov 的建议,我尝试像这样删除 Canvas 上的任何过滤:

DrawFilter filter = new PaintFlagsDrawFilter(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG | Paint.DITHER_FLAG, 0);

Canvas canvas = surfaceHolder.lockCanvas();

canvas.setDrawFilter(filter);

这会在我的 Toshiba Thrive 上消除抗锯齿产生奇怪的效果,但在我的 Galaxy Nexus 上却没有。

Screenshots

任何见解都值得赞赏。

最佳答案

您可以为整个 Canvas 禁用抗锯齿使用 PaintFlagsDrawFilterCanvas.setDrawFilter(DrawFilter filter) :

final DrawFilter filter = new PaintFlagsDrawFilter(Paint.ANTI_ALIAS_FLAG, 0);
final Canvas canvas = ...;

canvas.setDrawFilter(filter);

更新:

我查看了屏幕截图,我可以肯定地说这不是抗锯齿问题。您看到的是 bilinear filtration 的结果不幸的是,它不能为硬件加速 View 禁用。作为一种解决方法,您可以只对 View 使用软件光栅化:

view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

关于android - Android Canvas 上的 Drawable 可以禁用抗锯齿功能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14371009/

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