Android 图纸/';混合';安卓系统中画布上的透明图片
大家好 首先,我是Android新手,目前正在尝试制作一个图像编辑应用程序。我遇到了一个问题,如果我将半透明图像移到另一个图像上,后面的图像就不会被绘制(在画布上)。请注意,这仅在我不更改/设置绘制对象的Alpha(我不想这样做-如果我更改图像的Alpha值,我希望它们“永久”更改(出于保存目的),而不仅仅是视觉) 基本上,我有以下几点:Android 图纸/';混合';安卓系统中画布上的透明图片,android,canvas,transparency,Android,Canvas,Transparency,大家好 首先,我是Android新手,目前正在尝试制作一个图像编辑应用程序。我遇到了一个问题,如果我将半透明图像移到另一个图像上,后面的图像就不会被绘制(在画布上)。请注意,这仅在我不更改/设置绘制对象的Alpha(我不想这样做-如果我更改图像的Alpha值,我希望它们“永久”更改(出于保存目的),而不仅仅是视觉) 基本上,我有以下几点: //Set up of paint object paint = new Paint(Paint.FILTER_BITMAP_FLAG | Paint.DIT
//Set up of paint object
paint = new Paint(Paint.FILTER_BITMAP_FLAG | Paint.DITHER_FLAG | Paint.ANTI_ALIAS_FLAG);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.MULTIPLY)); // I've tried a couple of these (DST_ATOP and OVERLAY)
//paint.setColor(0x808fd2ea); - Messed around with this too, just to see
这是我目前用来手动改变每个像素的alpha值的循环,当前alpha=120(±50%透明度)
下面是一张图片的截图,没有透明度(不幸的是,我需要10%的声誉才能将其包含在这篇文章中)
在这里,我使用上面的循环编辑了顶部图像每个像素的alpha值,但它仍然是“不透明的”
也许它实际上是“看到”画布背景颜色,而不是其他图像背后的颜色?这就解释了为什么当我使它透明时,它只会变得更暗。我假设我需要让画布做一些每像素的混合或者类似的事情?不幸的是,我在这方面的知识仍然非常有限,因此我不确定从这里尝试什么/去哪里
我真的非常感谢任何关于这方面的指导:)
谢谢 好吧,这太尴尬了 在某个时刻,我记得我认为问题在于绘制对象,所以我决定尝试在以下位置绘制没有位图的位图(因此为“null”): 无论如何,关键是我当时还没有读到关于Paint.setXferMode的文章。将绘制对象添加回其中解决了问题,使用PorterDuff.OVERLAY似乎实现了我想要的:)
for(int y = 0; y < bmp.getHeight(); ++y)
{
int newPixelAlpha = (alpha << 24);
for (int x = 0; x < bmp.getWidth(); ++x)
{
bmp.setPixel(x, y, ((bmp.getPixel(x, y) & 0xFFFFFF) | newPixelAlpha));
}
}
public void drawSelf(Canvas canvas, Paint paint)
{
if(active) {
if (!selected) {
//paint.setAlpha(opacity);
canvas.drawBitmap(bitmap, rect.left, rect.top, null);
//This bit here is just if someone long-presses on the image, it gets "highlighted" but a rectangle over it, with transparency 170.
//Not being used at this point
} else {
paint.setAlpha(170);
canvas.drawRect(rect, paint);
canvas.drawBitmap(bitmap, rect.left, rect.top, paint);
}
}
}
canvas.drawBitmap(bitmap, rect.left, rect.top, null);