android xfermode不起作用,Android Xfermode

多种混合模式

PorterDuffXfermode的构造函数: /**

* Create an xfermode that uses the specified porter-duff mode.

*

* [@param](https://my.oschina.net/u/2303379) mode The porter-duff mode that is applied

*/

public PorterDuffXfermode(PorterDuff.Mode mode) {

this.mode = mode;

native_instance = nativeCreateXfermode(mode.nativeInt);

}

参数传入了PorterDuff.Mode mode,以下列出PorterDuff的所以的Mode。可以看到源码里面用一个枚举来表示 // these value must match their native equivalents. See SkXfermode.h

public enum Mode {

/** [0, 0] 所绘制不会提交到画布上。*/

CLEAR (0), //

/** [Sa, Sc] 显示上层绘制图片*/

SRC (1),

/** [Da, Dc] 显示下层绘制图片 */

DST (2),

/** [Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc] 正常绘制显示,上下层绘制叠盖。*/

SRC_OVER (3),

/** [Sa + (1 - Sa)*Da, Rc = Dc + (1 - Da)*Sc] 上下层都显示。下层居上显示。*/

DST_OVER (4),

/** [Sa * Da, Sc * Da] 取两层绘制交集。显示上层 */

SRC_IN (5),

/** [Sa * Da, Sa * Dc] 取两层绘制交集。显示下层。*/

DST_IN (6),

/** [Sa * (1 - Da), Sc * (1 - Da)] 取上层绘制非交集部分。*/

SRC_OUT (7),

/** [Da * (1 - Sa), Dc * (1 - Sa)] 取下层绘制非交集部分。*/

DST_OUT (8),

/** [Da, Sc * Da + (1 - Sa) * Dc] 取下层非交集部分与上层交集部分*/

SRC_ATOP (9),

/** [Sa, Sa * Dc + Sc * (1 - Da)] 取上层非交集部分与下层交集部分*/

DST_ATOP (10),

/** [Sa + Da - 2 * Sa * Da, Sc * (1 - Da) + (1 - Sa) * Dc] */

XOR (11),

/** [Sa + Da - Sa*Da,

Sc*(1 - Da) + Dc*(1 - Sa) + min(Sc, Dc)] */

DARKEN (16),

/** [Sa + Da - Sa*Da,

Sc*(1 - Da) + Dc*(1 - Sa) + max(Sc, Dc)] */

LIGHTEN (17),

/** [Sa * Da, Sc * Dc] */

MULTIPLY (13),

/** [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc] */

SCREEN (14),

/** Saturate(S + D) */

ADD (12),

OVERLAY (15);

Mode(int nativeInt) {

this.nativeInt = nativeInt;

}

/**

* [@hide](https://my.oschina.net/u/1429664)

*/

public final int nativeInt;

}

对应官方示意图

fa0a739981c39fd768819811162d1322.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值