1cb93a386Sopenharmony_ci---
2cb93a386Sopenharmony_cititle: 'SkBlendMode Overview'
3cb93a386Sopenharmony_cilinkTitle: 'SkBlendMode Overview'
4cb93a386Sopenharmony_ci
5cb93a386Sopenharmony_ciweight: 260
6cb93a386Sopenharmony_ci---
7cb93a386Sopenharmony_ci
8cb93a386Sopenharmony_ciDescribes how destination <a href='undocumented#Pixel'>pixel</a> is replaced
9cb93a386Sopenharmony_ciwith a combination of itself and source <a href='undocumented#Pixel'>pixel</a>.
10cb93a386Sopenharmony_ci<a href='#Blend_Mode'>Blend_Mode</a> may use source, destination, or both.
11cb93a386Sopenharmony_ci<a href='#Blend_Mode'>Blend_Mode</a> may operate on each
12cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkColor_8h.html'>Color</a> component
13cb93a386Sopenharmony_ciindependently, or may allow all source <a href='undocumented#Pixel'>pixel</a>
14cb93a386Sopenharmony_cicomponents to contribute to one destination
15cb93a386Sopenharmony_ci<a href='undocumented#Pixel'>pixel</a> component.
16cb93a386Sopenharmony_ci
17cb93a386Sopenharmony_ci<a href='#Blend_Mode'>Blend_Mode</a> does not use adjacent pixels to determine
18cb93a386Sopenharmony_cithe outcome.
19cb93a386Sopenharmony_ci
20cb93a386Sopenharmony_ci<a href='#Blend_Mode'>Blend_Mode</a> uses source and read destination
21cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkColor_8h.html#a918cf5a3a68406ac8107f6be48fb906e'>Alpha</a>
22cb93a386Sopenharmony_cito determine written destination
23cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkColor_8h.html#a918cf5a3a68406ac8107f6be48fb906e'>Alpha</a>;
24cb93a386Sopenharmony_ciboth source and destination
25cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkColor_8h.html#a918cf5a3a68406ac8107f6be48fb906e'>Alpha</a>
26cb93a386Sopenharmony_cimay also affect written destination
27cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkColor_8h.html'>Color</a> components.
28cb93a386Sopenharmony_ci
29cb93a386Sopenharmony_ciRegardless of how
30cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkColor_8h.html#a918cf5a3a68406ac8107f6be48fb906e'>Alpha</a>
31cb93a386Sopenharmony_ciis encoded in source and destination <a href='undocumented#Pixel'>pixel</a>,
32cb93a386Sopenharmony_cinearly all <a href='#Image_Info_Color_Type'>Color_Types</a> treat it as ranging
33cb93a386Sopenharmony_cifrom zero to one. And, nearly all <a href='#Blend_Mode'>Blend_Mode</a>
34cb93a386Sopenharmony_cialgorithms limit the output so that all results are also zero to one.
35cb93a386Sopenharmony_ci
36cb93a386Sopenharmony_ciTwo exceptions are
37cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkBlendMode_8h.html#ad96d76accb8ff5f3eafa29b91f7a25f0'>SkBlendMode</a>::<a href='#SkBlendMode_kPlus'>kPlus</a>
38cb93a386Sopenharmony_ciand
39cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkImageInfo_8h.html#a9ac0b62b3d2c6c7e1a80db557243f93e'>kRGBA_F16_SkColorType</a>.
40cb93a386Sopenharmony_ci
41cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkBlendMode_8h.html#ad96d76accb8ff5f3eafa29b91f7a25f0'>SkBlendMode</a>::<a href='#SkBlendMode_kPlus'>kPlus</a>
42cb93a386Sopenharmony_cipermits computing
43cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkColor_8h.html#a918cf5a3a68406ac8107f6be48fb906e'>Alpha</a>
44cb93a386Sopenharmony_ciand <a href='https://api.skia.org/SkColor_8h.html'>Color</a> component values
45cb93a386Sopenharmony_cilarger than one. For <a href='#Image_Info_Color_Type'>Color_Types</a> other than
46cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkImageInfo_8h.html#a9ac0b62b3d2c6c7e1a80db557243f93e'>kRGBA_F16_SkColorType</a>,
47cb93a386Sopenharmony_ciresulting
48cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkColor_8h.html#a918cf5a3a68406ac8107f6be48fb906e'>Alpha</a>
49cb93a386Sopenharmony_ciand component values are clamped to one.
50cb93a386Sopenharmony_ci
51cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkImageInfo_8h.html#a9ac0b62b3d2c6c7e1a80db557243f93e'>kRGBA_F16_SkColorType</a>
52cb93a386Sopenharmony_cipermits values outside the zero to one range. It is up to the client to ensure
53cb93a386Sopenharmony_cithat the result is within the range of zero to one, and therefore well-defined.
54cb93a386Sopenharmony_ci
55cb93a386Sopenharmony_ci<a name='Porter_Duff'></a>
56cb93a386Sopenharmony_ci
57cb93a386Sopenharmony_ci<a href='https://graphics.pixar.com/library/Compositing/paper.pdf'>Compositing
58cb93a386Sopenharmony_ciDigital Images</a></a> describes
59cb93a386Sopenharmony_ci<a href='#Blend_Mode_Overview_Porter_Duff'>Porter_Duff</a> modes
60cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkBlendMode_8h.html#ad96d76accb8ff5f3eafa29b91f7a25f0'>SkBlendMode</a>::<a href='#SkBlendMode_kClear'>kClear</a>
61cb93a386Sopenharmony_cithrough
62cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkBlendMode_8h.html#ad96d76accb8ff5f3eafa29b91f7a25f0'>SkBlendMode</a>::<a href='#SkBlendMode_kXor'>kXor</a>.
63cb93a386Sopenharmony_ci
64cb93a386Sopenharmony_ciDrawing a <a href='https://api.skia.org/classSkBitmap.html'>bitmap</a> with
65cb93a386Sopenharmony_citransparency using <a href='#Blend_Mode_Overview_Porter_Duff'>Porter_Duff</a>
66cb93a386Sopenharmony_cicompositing is free to clear the destination.
67cb93a386Sopenharmony_ci
68cb93a386Sopenharmony_ci![Porter_Duff](https://fiddle.skia.org/i/819903e0bb125385269948474b6c8a84_raster.png)
69cb93a386Sopenharmony_ci
70cb93a386Sopenharmony_ciDraw geometry with transparency using
71cb93a386Sopenharmony_ci<a href='#Blend_Mode_Overview_Porter_Duff'>Porter_Duff</a> compositing does not
72cb93a386Sopenharmony_cicombine transparent source pixels, leaving the destination outside the geometry
73cb93a386Sopenharmony_ciuntouched.
74cb93a386Sopenharmony_ci
75cb93a386Sopenharmony_ci![Porter_Duff](https://fiddle.skia.org/i/8f320c1e94e77046e00f7e9e843caa27_raster.png)
76cb93a386Sopenharmony_ci
77cb93a386Sopenharmony_ci<a name='Lighten_Darken'></a>
78cb93a386Sopenharmony_ci
79cb93a386Sopenharmony_ciModes
80cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkBlendMode_8h.html#ad96d76accb8ff5f3eafa29b91f7a25f0'>SkBlendMode</a>::<a href='#SkBlendMode_kPlus'>kPlus</a>
81cb93a386Sopenharmony_ciand
82cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkBlendMode_8h.html#ad96d76accb8ff5f3eafa29b91f7a25f0'>SkBlendMode</a>::<a href='#SkBlendMode_kScreen'>kScreen</a>
83cb93a386Sopenharmony_ciuse simple arithmetic to lighten or darken the destination. Modes
84cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkBlendMode_8h.html#ad96d76accb8ff5f3eafa29b91f7a25f0'>SkBlendMode</a>::<a href='#SkBlendMode_kOverlay'>kOverlay</a>
85cb93a386Sopenharmony_cithrough
86cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkBlendMode_8h.html#ad96d76accb8ff5f3eafa29b91f7a25f0'>SkBlendMode</a>::<a href='#SkBlendMode_kMultiply'>kMultiply</a>
87cb93a386Sopenharmony_ciuse more complicated algorithms to lighten or darken; sometimes one mode does
88cb93a386Sopenharmony_ciboth, as described by <a href='https://en.wikipedia.org/wiki/Blend_modes'>Blend
89cb93a386Sopenharmony_ciModes</a></a> .
90cb93a386Sopenharmony_ci
91cb93a386Sopenharmony_ci![Lighten_Darken](https://fiddle.skia.org/i/23a33fa04cdd0204b2490d05e340f87c_raster.png)
92cb93a386Sopenharmony_ci
93cb93a386Sopenharmony_ci<a name='Modulate_Blend'></a>
94cb93a386Sopenharmony_ci
95cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkBlendMode_8h.html#ad96d76accb8ff5f3eafa29b91f7a25f0'>SkBlendMode</a>::<a href='#SkBlendMode_kModulate'>kModulate</a>
96cb93a386Sopenharmony_ciis a mashup of
97cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkBlendMode_8h.html#ad96d76accb8ff5f3eafa29b91f7a25f0'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcATop'>kSrcATop</a>
98cb93a386Sopenharmony_ciand
99cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkBlendMode_8h.html#ad96d76accb8ff5f3eafa29b91f7a25f0'>SkBlendMode</a>::<a href='#SkBlendMode_kMultiply'>kMultiply</a>.
100cb93a386Sopenharmony_ciIt multiplies all components, including
101cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkColor_8h.html#a918cf5a3a68406ac8107f6be48fb906e'>Alpha</a>;
102cb93a386Sopenharmony_ciunlike
103cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkBlendMode_8h.html#ad96d76accb8ff5f3eafa29b91f7a25f0'>SkBlendMode</a>::<a href='#SkBlendMode_kMultiply'>kMultiply</a>,
104cb93a386Sopenharmony_ciif either source or destination is transparent, result is transparent.
105cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkBlendMode_8h.html#ad96d76accb8ff5f3eafa29b91f7a25f0'>SkBlendMode</a>::<a href='#SkBlendMode_kModulate'>kModulate</a>
106cb93a386Sopenharmony_ciuses <a href='undocumented#Premultiply'>Premultiplied</a> values to compute the
107cb93a386Sopenharmony_ciproduct;
108cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkBlendMode_8h.html#ad96d76accb8ff5f3eafa29b91f7a25f0'>SkBlendMode</a>::<a href='#SkBlendMode_kMultiply'>kMultiply</a>
109cb93a386Sopenharmony_ciuses <a href='undocumented#Unpremultiply'>Unpremultiplied</a> values to compute
110cb93a386Sopenharmony_cithe product.
111cb93a386Sopenharmony_ci
112cb93a386Sopenharmony_ci![Modulate_Blend](https://fiddle.skia.org/i/877f96610ab7638a310432674b04f837_raster.png)
113cb93a386Sopenharmony_ci
114cb93a386Sopenharmony_ci<a name='Color_Blends'></a>
115cb93a386Sopenharmony_ci
116cb93a386Sopenharmony_ciModes
117cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkBlendMode_8h.html#ad96d76accb8ff5f3eafa29b91f7a25f0'>SkBlendMode</a>::<a href='#SkBlendMode_kHue'>kHue</a>,
118cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkBlendMode_8h.html#ad96d76accb8ff5f3eafa29b91f7a25f0'>SkBlendMode</a>::<a href='#SkBlendMode_kSaturation'>kSaturation</a>,
119cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkBlendMode_8h.html#ad96d76accb8ff5f3eafa29b91f7a25f0'>SkBlendMode</a>::<a href='#SkBlendMode_kColor'>kColor</a>,
120cb93a386Sopenharmony_ciand
121cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkBlendMode_8h.html#ad96d76accb8ff5f3eafa29b91f7a25f0'>SkBlendMode</a>::<a href='#SkBlendMode_kLuminosity'>kLuminosity</a>
122cb93a386Sopenharmony_ciconvert source and destination pixels using all components
123cb93a386Sopenharmony_ci<a href='https://api.skia.org/SkColor_8h.html'>color</a> information, using
124cb93a386Sopenharmony_ci<a href='https://www.w3.org/TR/compositing-1/#blendingnonseparable'>non-separable
125cb93a386Sopenharmony_ciblend modes</a></a> .
126cb93a386Sopenharmony_ci
127cb93a386Sopenharmony_ci![Color_Blends](https://fiddle.skia.org/i/630fe21aea8369b307231f5bcf8b2d50_raster.png)
128