@@ -107,78 +107,25 @@ PicPick具备了截取全屏、活动窗口、指定区域、固定区域、手
107107
108108下表是各个PorterDuff模式的混合计算公式:(D指原本在Canvas上的内容dst,S指绘制输入的内容src,a指alpha通道,c指RGB各个通道)
109109
110- <table class =" confluenceTable " >
111- <tbody >
112- <tr >
113- <td class =" confluenceTd " >ADD  ; </td >
114- <td class =" confluenceTd " >Saturate(S + D)   ; </td >
115- </tr >
116- <tr >
117- <td class =" confluenceTd " >CLEAR  ; </td >
118- <td class =" confluenceTd " >[0, 0]   ; </td >
119- </tr >
120- <tr >
121- <td class =" confluenceTd " >DARKEN  ; </td >
122- <td class =" confluenceTd " >[Sa + Da - Sa*Da, Sc*(1 - Da) + Dc*(1 - Sa) + min(Sc, Dc)]   ; </td >
123- </tr >
124- <tr >
125- <td class =" confluenceTd " >DST  ; </td >
126- <td class =" confluenceTd " >[Da, Dc]   ; </td >
127- </tr >
128- <tr >
129- <td class =" confluenceTd " >DST_ATOP  ; </td >
130- <td class =" confluenceTd " >[Sa, Sa * Dc + Sc * (1 - Da)]   ; </td >
131- </tr >
132- <tr >
133- <td class =" confluenceTd " >DST_IN  ; </td >
134- <td class =" confluenceTd " >[Sa * Da, Sa * Dc]   ; </td >
135- </tr >
136- <tr >
137- <td class =" confluenceTd " >DST_OUT  ; </td >
138- <td class =" confluenceTd " >[Da * (1 - Sa), Dc * (1 - Sa)]   ; </td >
139- </tr >
140- <tr >
141- <td class =" confluenceTd " >DST_OVER  ; </td >
142- <td class =" confluenceTd " >[Sa + (1 - Sa)*Da, Rc = Dc + (1 - Da)*Sc]   ; </td >
143- </tr >
144- <tr >
145- <td class =" confluenceTd " >LIGHTEN  ; </td >
146- <td class =" confluenceTd " >[Sa + Da - Sa*Da, Sc*(1 - Da) + Dc*(1 - Sa) + max(Sc, Dc)]   ; </td >
147- </tr >
148- <tr >
149- <td class =" confluenceTd " >MULTIPLY  ; </td >
150- <td class =" confluenceTd " >[Sa * Da, Sc * Dc]   ; </td >
151- </tr >
152- <tr >
153- <td class =" confluenceTd " >SCREEN  ; </td >
154- <td class =" confluenceTd " >[Sa + Da - Sa * Da, Sc + Dc - Sc * Dc]   ; </td >
155- </tr >
156- <tr >
157- <td class =" confluenceTd " >SRC  ; </td >
158- <td class =" confluenceTd " >[Sa, Sc]   ; </td >
159- </tr >
160- <tr >
161- <td class =" confluenceTd " >SRC_ATOP  ; </td >
162- <td class =" confluenceTd " >[Da, Sc * Da + (1 - Sa) * Dc]   ; </td >
163- </tr >
164- <tr >
165- <td class =" confluenceTd " >SRC_IN  ; </td >
166- <td class =" confluenceTd " >[Sa * Da, Sc * Da]   ; </td >
167- </tr >
168- <tr >
169- <td class =" confluenceTd " >SRC_OUT  ; </td >
170- <td class =" confluenceTd " >[Sa * (1 - Da), Sc * (1 - Da)]   ; </td >
171- </tr >
172- <tr >
173- <td class =" confluenceTd " >SRC_OVER  ; </td >
174- <td class =" confluenceTd " >[Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc]   ; </td >
175- </tr >
176- <tr >
177- <td class =" confluenceTd " >XOR  ; </td >
178- <td class =" confluenceTd " >[Sa + Da - 2 * Sa * Da, Sc * (1 - Da) + (1 - Sa) * Dc]   ; </td >
179- </tr >
180- </tbody >
181- </table >
110+ 混合模式 | 计算公式
111+ :------- | :---------
112+ ADD | Saturate(S + D)
113+ CLEAR | [ 0, 0]
114+ DARKEN | [ Sa + Da - Sa* Da, Sc* (1 - Da) + Dc* (1 - Sa) + min(Sc, Dc)]
115+ DST | [ Da, Dc]
116+ DST_ATOP | [ Sa, Sa * Dc + Sc * (1 - Da)]
117+ DST_IN | [ Sa * Da, Sa * Dc]
118+ DST_OUT | [ Da * (1 - Sa), Dc * (1 - Sa)]
119+ DST_OVER | [ Sa + (1 - Sa)* Da, Rc = Dc + (1 - Da)* Sc]
120+ LIGHTEN | [ Sa + Da - Sa* Da, Sc* (1 - Da) + Dc* (1 - Sa) + max(Sc, Dc)]
121+ MULTIPLY | [ Sa * Da, Sc * Dc]
122+ SCREEN | [ Sa + Da - Sa * Da, Sc + Dc - Sc * Dc]
123+ SRC | [ Sa, Sc]
124+ SRC_ATOP | [ Da, Sc * Da + (1 - Sa) * Dc]
125+ SRC_IN | [ Sa * Da, Sc * Da]
126+ SRC_OUT | [ Sa * (1 - Da), Sc * (1 - Da)]
127+ SRC_OVER | [ Sa + (1 - Sa)* Da, Rc = Sc + (1 - Sa)* Dc]
128+ XOR | [ Sa + Da - 2 * Sa * Da, Sc * (1 - Da) + (1 - Sa) * Dc]
182129
183130用示例图来查看使用不同模式时的混合效果如下(src表示输入的图,dst表示原Canvas上的内容):
184131
0 commit comments