Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.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_Canvas_Bitmap - Fatal编程技术网

Android:你如何用颜色按体积填充位图?

Android:你如何用颜色按体积填充位图?,android,canvas,bitmap,Android,Canvas,Bitmap,我有一个不规则形状的位图图像,我用某种颜色填充,以模拟各种“米”。我当前的方法是使用ColorMatrixColorFilter替换原始bimtap上的颜色,最大百分比为位图高度。我真正想做的是用体积替换颜色。您可以在未填充位图的上方绘制填充位图,但使用基于仪表级别的剪裁路径。如果可以用一个矩形剪辑来实现,那么Canvas.clipRect(float,float,float,float)将非常简单。否则,您可能必须指定更一般的路径并使用Canvas.clipPath(path)。但是,clip

我有一个不规则形状的位图图像,我用某种颜色填充,以模拟各种“米”。我当前的方法是使用ColorMatrixColorFilter替换原始bimtap上的颜色,最大百分比为位图高度。我真正想做的是用体积替换颜色。

您可以在未填充位图的上方绘制填充位图,但使用基于仪表级别的剪裁路径。如果可以用一个矩形剪辑来实现,那么Canvas.clipRect(float,float,float,float)将非常简单。否则,您可能必须指定更一般的路径并使用Canvas.clipPath(path)。但是,clipPath没有抗锯齿,因此看起来有点糟糕


另一个选项是直接使用自定义路径绘制覆盖,为方便起见,可能使用SVG路径原语。查看此项目:特别是此方法:)。

在调用Canvas.drawBitmap之前,我正在调用Canvas.clipRect,问题是clip rect的顶部基于位图高度的百分比,而不是基于体积计算的。我认为需要做的是,我需要知道位图的每行有多少像素,以及位图中的总像素数,然后根据哪个行数符合目标体积百分比来计算clip rect的高度。有趣。好吧,我认为Android库中的任何东西都不能帮你做到这一点。您必须对正在使用的形状进行建模,并自己计算“体积”(即2D面积),然后使用该体积计算到适当的行以进行剪裁。一个简化的启发式可能就足够了,我不认为用户会要求一个完美的“注水”式的进度动画。