This commit is contained in:
sloop
2016-03-13 20:36:53 +08:00
parent 5ad05a6b43
commit 3b847e7676

View File

@@ -107,78 +107,25 @@ PicPick具备了截取全屏、活动窗口、指定区域、固定区域、手
下表是各个PorterDuff模式的混合计算公式D指原本在Canvas上的内容dstS指绘制输入的内容srca指alpha通道c指RGB各个通道 下表是各个PorterDuff模式的混合计算公式D指原本在Canvas上的内容dstS指绘制输入的内容srca指alpha通道c指RGB各个通道
<table class="confluenceTable"> 混合模式 | 计算公式
<tbody> :------- | :---------
<tr> ADD | Saturate(S + D)
<td class="confluenceTd">ADD&nbsp;</td> CLEAR | [0, 0]
<td class="confluenceTd">Saturate(S + D) &nbsp;</td> DARKEN | [Sa + Da - Sa*Da, Sc*(1 - Da) + Dc*(1 - Sa) + min(Sc, Dc)]
</tr> DST | [Da, Dc]
<tr> DST_ATOP | [Sa, Sa * Dc + Sc * (1 - Da)]
<td class="confluenceTd">CLEAR&nbsp;</td> DST_IN | [Sa * Da, Sa * Dc]
<td class="confluenceTd">[0, 0] &nbsp;</td> DST_OUT | [Da * (1 - Sa), Dc * (1 - Sa)]
</tr> DST_OVER | [Sa + (1 - Sa)*Da, Rc = Dc + (1 - Da)*Sc]
<tr> LIGHTEN | [Sa + Da - Sa*Da, Sc*(1 - Da) + Dc*(1 - Sa) + max(Sc, Dc)]
<td class="confluenceTd">DARKEN&nbsp;</td> MULTIPLY | [Sa * Da, Sc * Dc]
<td class="confluenceTd">[Sa + Da - Sa*Da, Sc*(1 - Da) + Dc*(1 - Sa) + min(Sc, Dc)] &nbsp;</td> SCREEN | [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc]
</tr> SRC | [Sa, Sc]
<tr> SRC_ATOP | [Da, Sc * Da + (1 - Sa) * Dc]
<td class="confluenceTd">DST&nbsp;</td> SRC_IN | [Sa * Da, Sc * Da]
<td class="confluenceTd">[Da, Dc] &nbsp;</td> SRC_OUT | [Sa * (1 - Da), Sc * (1 - Da)]
</tr> SRC_OVER | [Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc]
<tr> XOR | [Sa + Da - 2 * Sa * Da, Sc * (1 - Da) + (1 - Sa) * Dc]
<td class="confluenceTd">DST_ATOP&nbsp;</td>
<td class="confluenceTd">[Sa, Sa * Dc + Sc * (1 - Da)] &nbsp;</td>
</tr>
<tr>
<td class="confluenceTd">DST_IN&nbsp;</td>
<td class="confluenceTd">[Sa * Da, Sa * Dc] &nbsp;</td>
</tr>
<tr>
<td class="confluenceTd">DST_OUT&nbsp;</td>
<td class="confluenceTd">[Da * (1 - Sa), Dc * (1 - Sa)] &nbsp;</td>
</tr>
<tr>
<td class="confluenceTd">DST_OVER&nbsp;</td>
<td class="confluenceTd">[Sa + (1 - Sa)*Da, Rc = Dc + (1 - Da)*Sc] &nbsp;</td>
</tr>
<tr>
<td class="confluenceTd">LIGHTEN&nbsp;</td>
<td class="confluenceTd">[Sa + Da - Sa*Da, Sc*(1 - Da) + Dc*(1 - Sa) + max(Sc, Dc)] &nbsp;</td>
</tr>
<tr>
<td class="confluenceTd">MULTIPLY&nbsp;</td>
<td class="confluenceTd">[Sa * Da, Sc * Dc] &nbsp;</td>
</tr>
<tr>
<td class="confluenceTd">SCREEN&nbsp;</td>
<td class="confluenceTd">[Sa + Da - Sa * Da, Sc + Dc - Sc * Dc] &nbsp;</td>
</tr>
<tr>
<td class="confluenceTd">SRC&nbsp;</td>
<td class="confluenceTd">[Sa, Sc] &nbsp;</td>
</tr>
<tr>
<td class="confluenceTd">SRC_ATOP&nbsp;</td>
<td class="confluenceTd">[Da, Sc * Da + (1 - Sa) * Dc] &nbsp;</td>
</tr>
<tr>
<td class="confluenceTd">SRC_IN&nbsp;</td>
<td class="confluenceTd">[Sa * Da, Sc * Da] &nbsp;</td>
</tr>
<tr>
<td class="confluenceTd">SRC_OUT&nbsp;</td>
<td class="confluenceTd">[Sa * (1 - Da), Sc * (1 - Da)] &nbsp;</td>
</tr>
<tr>
<td class="confluenceTd">SRC_OVER&nbsp;</td>
<td class="confluenceTd">[Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc] &nbsp;</td>
</tr>
<tr>
<td class="confluenceTd">XOR&nbsp;</td>
<td class="confluenceTd">[Sa + Da - 2 * Sa * Da, Sc * (1 - Da) + (1 - Sa) * Dc] &nbsp;</td>
</tr>
</tbody>
</table>
用示例图来查看使用不同模式时的混合效果如下src表示输入的图dst表示原Canvas上的内容 用示例图来查看使用不同模式时的混合效果如下src表示输入的图dst表示原Canvas上的内容