zeh*_*zeh 9 android blending porter-duff
我正在尝试使用类似Multiply的混合模式将两个图像与Android混合在一起.
// Prepare -------------------------------
// Create source images
Bitmap img1 = ...
Bitmap img2 = ...
// Create result image
Bitmap result = ...
Canvas canvas = new Canvas();
canvas.setBitmap(result);
// Get proper display reference
BitmapDrawable drawable = new BitmapDrawable(getResources(), result);
ImageView imageView = (ImageView)findViewById(R.id.imageBlend1);
imageView.setImageDrawable(drawable);
// Apply -------------------------------
// Draw base
canvas.drawBitmap(img1, 0, 0, null);
// Draw overlay
Paint paint = new Paint();
paint.setXfermode(new PorterDuffXfermode(Mode.MULTIPLY));
paint.setShader(new BitmapShader(img2, TileMode.CLAMP, TileMode.CLAMP));
canvas.drawRect(0, 0, img2.getWidth(), img2.getHeight(), paint);
Run Code Online (Sandbox Code Playgroud)
这是有效的,但是我无法控制所做的乘法"量" - 它始终是一个完全的乘法传递.理想情况下,0%乘法与基本图像(img1)相同而没有任何变化,但100%乘法将是我得到的上述代码的结果.
paint.setAlpha() 似乎不适用于此.
设置新"图层"的%不透明度的其他任何方法?
PS有一些方法可以LightingColorFilter通过预乘和将颜色偏移到白色来实现与此相乘(使用a ),但它非常特定于乘法模式...我正试图找到一种方法来应用不透明度/所有其他传输模式也是%.
| 归档时间: |
|
| 查看次数: |
12318 次 |
| 最近记录: |