1# 图形子系统变更说明
2
3## cl.blendMode.1 blendMode接口变更
4
5**访问级别**
6
7公开接口
8
9**变更原因**
10
11之前接口行为不够通用,难以满足三方应用多场景需求实现。当前有三方场景无法满足, 诉求进行变更。
12
13**变更影响**
14
15该变更为不兼容变更。<br>
161、使用blendMode接口时,开发者调用接口枚举发生变化。枚举NORMAL变为NONE,SOURCE_IN变为SRC_IN, DESTINATION_IN变为DST_IN。<br>
172、接口行为由当前控件背景与子节点内容进行混合改为当前控件内容(含子节点内容)与下方画布(可能为离屏画布)已有内容进行混合。
18
19**API Level**
20
2111
22
23**变更发生版本**
24
25从Openharmony SDK 4.1.6.3 开始
26
27**变更的接口/组件**
28
29blendMode接口枚举和接口行为进行非兼容性变更。
30
31**适配指导**
32
331、开发者需将原先调用枚举由NORMAL改为NONE,SOURCE_IN改为SRC_IN,DESTINATION_IN改为DST_IN。<br>
342、由于接口行为发生改变,之前的接口内含两次离屏,第一次离屏用来绘制控件背景,第二次离屏用来绘制子节点内容。当前接口仅可支持一次离屏,需调用BlendApplyType.OFFSCREEN来触发离屏,接口默认无离屏。若想与原有接口行为保持一致,接口需调用两次来保持两次离屏。其中第一次离屏用来绘制控件背景,第二次离屏用来绘制子节点内容。<br>
35示例代码:
36```ts
37// xxx.ets 新接口,可通过调用BlendApplyType.OFFSCREEN触发一次离屏
38@Entry
39@Component
40struct Index {
41  build() {
42    Column() {
43      // 第二次离屏用来绘制子节点内容
44      Text("test")
45        .fontSize(144)
46        .fontWeight(FontWeight.Bold)
47        .fontColor('#ffff0101')
48        .blendMode(BlendMode.SRC_IN, BlendApplyType.OFFSCREEN)
49    }
50   // 第一次离屏用来绘制控件背景
51    .blendMode(BlendMode.SRC_OVER, BlendApplyType.OFFSCREEN)
52    .height('100%')
53    .width('100%')
54    .backgroundColor('#ff08ff00')
55  }
56}
57
58// xxx.ets 旧接口,内部默认触发两次离屏
59@Entry
60@Component
61struct Index {
62  build() {
63    Column() {
64      // 第二次离屏用来绘制子节点内容
65      Text("test")
66        .fontSize(144)
67        .fontWeight(FontWeight.Bold)
68        .fontColor('#ffff0101')
69    }
70    // 第一次离屏用来绘制控件背景
71    .blendMode(BlendMode.SRC_IN)
72    .height('100%')
73    .width('100%')
74    .backgroundColor('#ff08ff00')
75  }
76}
77```