我有一张带有背景图片的画布,我可以在其上书写,绘制线条,放置较小的图片,旋转,缩放等。 我需要更改其中一个位图的颜色。 我有一个颜色选择器,看起来像这样:
public void colorChanged(int color) {
if (isText) {
myView.setTextColor(color);
} else if(isDrawing) {
mPaint.setColor(color);
myView.setPaint(mPaint);
} else if(ispic) {
//TODO
}
}
我尝试了类似于我所拥有的东西isText代码的一部分,但它只改变我放置的行后面的颜色,或者移动我的图片(如果我不改变颜色,它当前是透明的)。
myView是一个CustomView,我有onDraw方法。
答案 0 :(得分:1)
您可以使用android中的ColorMatrix
更改位图的颜色。
访问this post了解详情。 ColorMatrix here。
的示例答案 1 :(得分:1)
Paint p = new Paint(Color.RED);
ColorFilter filter = new LightingColorFilter(Color.RED, 1);
p.setColorFilter(filter);
然后用Paint
个对象绘制。
Bitmap sourceBitmap = BitmapFactory.decodeFile(imgPath);
float[] colorTransform = {
0, 1f, 0, 0, 0,
0, 0, 0f, 0, 0,
0, 0, 0, 0f, 0,
0, 0, 0, 1f, 0};
ColorMatrix colorMatrix = new ColorMatrix();
colorMatrix.setSaturation(0f); //Remove Colour
colorMatrix.set(colorTransform); //Apply Red say
ColorMatrixColorFilter colorFilter = new ColorMatrixColorFilter(colorMatrix);
Paint paint = new Paint();
paint.setColorFilter(colorFilter);
Display display = getWindowManager().getDefaultDisplay();
Bitmap resultBitmap = Bitmap.createBitmap(sourceBitmap, 0, (int)(display.getHeight() * 0.15), display.getWidth(), (int)(display.getHeight() * 0.75));
Canvas canvas = new Canvas(resultBitmap);
canvas.drawBitmap(resultBitmap, 0, 0, paint);