Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我们需要在android中绘制一个整数颜色数组作为位图?_Android_Paint_Android Canvas - Fatal编程技术网

为什么我们需要在android中绘制一个整数颜色数组作为位图?

为什么我们需要在android中绘制一个整数颜色数组作为位图?,android,paint,android-canvas,Android,Paint,Android Canvas,如果我忽略了什么,请原谅,但我在任何地方都找不到答案。在android中,画布有一种将整数数组绘制为位图的方法: void drawBitmap(int[] colors, int offset, int stride, int x, int y, int width, int height, boolean hasAlpha, Paint paint) 我理解传递给这个方法的每个参数,除了最后一个。当它从

如果我忽略了什么,请原谅,但我在任何地方都找不到答案。在android中,画布有一种将整数数组绘制为位图的方法:

void     drawBitmap(int[] colors, int offset, int stride,
                    int x, int y, int width, int height,
                    boolean hasAlpha, Paint paint)
我理解传递给这个方法的每个参数,除了最后一个。当它从作为“颜色”传递的整数数组中获取渲染位图所需的确切信息时,为什么需要任何“绘制”信息

如果我们使用不同的油漆,结果有什么不同吗?如果是,什么?它是否与伪像素-真实像素变换(如抗锯齿)有关?如果是,这会对性能产生什么样的影响(和/或其他绘制特性)

另外(额外的问题)是否需要实例化具有所需属性的新绘制对象,或者这是否总是需要几行代码?(是的,请参见下文)

编辑:我了解到可以使用标志实例化绘制对象:

private Paint mPaint = new Paint(Paint.FILTER_BITMAP_FLAG + Paint.ANTI_ALIAS_FLAG + Paint.DITHER_FLAG);
你不需要它,油漆可以是空的


它很可能存在,因此您可以使用Paint的colorFilter或maskFilter属性,因为它们将应用于您的颜色。

这是一个从drawBitmap方法内部调用的函数

native_drawBitmap(mNativeCanvas, colors, offset, stride, x, y, width, height, hasAlpha,
            paint != null ? paint.mNativePaint : 0);
如您所见,即使发送null,也会传递0


据我所知,paint对象用于处理画布、位图和屏幕之间的密度差异。

为了澄清,从这段代码来看,为paint传递null似乎会导致将值“0”作为该参数传递给本机\u drawBitmap函数(我猜这是某种合理的默认值)。您知道是否存在显著的性能损失/好处吗?哦,我没有注意到“!=”。我不知道性能差异。您可能需要运行一些测试,或者其他人可能会有正确的答案。您知道各种油漆选择会对性能产生什么样的影响(如果有)吗?或者这是一个不确定的问题吗在硬件方面是e,因此不值得考虑?