在Jetpack Compose中绘制像素艺术



我需要禁用图像中的过滤功能才能正确显示像素艺术。我该怎么做?

我曾经这样回答:

val DRAW_FILTER = PaintFlagsDrawFilter(Paint.FILTER_BITMAP_FLAG, 0)
@SuppressLint("RestrictedApi")
class AliasingDrawableWrapper(wrapped: Drawable) : DrawableWrapper(wrapped) {
override fun draw(canvas: Canvas) {
val oldDrawFilter = canvas.drawFilter
canvas.drawFilter = DRAW_FILTER
super.draw(canvas)
canvas.drawFilter = oldDrawFilter
}
}

imageView.setImageDrawable(AliasingDrawableWrapper(drawable)

至少现在堡垒,你不能。Jetpack Compose使用一个共享的Paint,创建时带有反别名标志。

我打开了一个问题,询问是否有可能设置我们自己的旗帜:https://issuetracker.google.com/issues/172473708

以下是Compose在AndroidPaint.kt:中的声明

internal fun makeNativePaint() =
android.graphics.Paint(android.graphics.Paint.ANTI_ALIAS_FLAG)

由于Compose 1.1.0-alpha01 Image采用可选的FilterQuality参数。使用FilterQuality。像素艺术无:

Image(
...,
filterQuality = FilterQuality.None
)

最新更新