• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# graphics_effect
2
3## 介绍
4Graphics Effect是OpenHarmony图形子系统的重要部件,为图形子系统提供必需的动视效算法能力,包括模糊、阴影、渐变、灰阶、提亮、反色、取色等。
5
6## 软件架构
7![GraphicsEffect架构图](./figures/graphics_effect_architecture.png)
8
9Graphics Effect的分层说明如下:
10
11• 接口层:Graphics Effect通过ArkUI、UIEffect、EffectKit对外开放能力。
12
13• 实现层:分为GERender、GEVisualEffect、GEVisualEffectContainer三个模块。
14| 模块                            | 能力描述                            |
15|-------------------------------|---------------------------------------|
16| GERender(渲染)                  | 提供绘制能力,将GEVisualEffect效果绘制到canvas画布上。 |
17| GEVisualEffect(动视效)            | 具体动视效能力的实现。                          |
18| GEVisualEffectContainer(动视效容器) | 多个动视效方便集成。                           |
19
20## 目录结构
21```
22foundation/graphic/graphics_effect/
23├── figures                 # Markdown引用的图片目录
24├── include                 # Graphics Effect接口存放目录
25│   ├── ext                 # 动态加载框架及算法接口存放目录
26├── src                     # 源代码存放目录
27│   ├── ext                 # 动态加载框架及算法接口实现存放目录
28└── test                    # 测试用例存放目录
29    ├── fuzztest            # fuzz用例存放目录
30    └── unittest            # 单元测试用例存放目录
31```
32
33## 安装教程
34
35不涉及
36
37## 使用说明
38
39在桌面、状态栏、控制中心等系统UI场景中已经集成了该部件的能力,用户可直接操作使用并体验相应效果。
40
41### 1.将指定动视效绘制到画布上
42
43以Image为基础,应用GEVisualEffectContainer所包含的动视效,并直接绘制到传入的canvas画布上
44```
45void DrawImageEffect(Drawing::Canvas& canvas, Drawing::GEVisualEffectContainer& veContainer,
46        const std::shared_ptr<Drawing::Image>& image, const Drawing::Rect& src, const Drawing::Rect& dst,
47        const Drawing::SamplingOptions& sampling);
48```
49调用示例:
50```
51  Drawing::Canvas canvas;
52  auto image = std::make_shared<Drawing::Image>();
53  auto visualEffectContainer = std::make_shared<Drawing::GEVisualEffectContainer>();
54  DrawImageRectAttributes attr;
55
56  auto geRender = std::make_shared<GraphicsEffectEngine::GERender>();
57  geRender->DrawImageEffect(canvas, *visualEffectContainer, image, attr.src, attr.src, Drawing::SamplingOptions());
58```
59
60### 2.将指定动视效绘制到画布上并以图片形式返回绘制结果
61
62以Image为基础,应用GEVisualEffectContainer所包含的动视效,并返回新的Image
63```
64std::shared_ptr<Drawing::Image> ApplyImageEffect(Drawing::Canvas& canvas,
65        Drawing::GEVisualEffectContainer& veContainer, const std::shared_ptr<Drawing::Image>& image,
66        const Drawing::Rect& src, const Drawing::Rect& dst, const Drawing::SamplingOptions& sampling);
67```
68调用示例:
69```
70  Drawing::Canvas canvas;
71  auto image = std::make_shared<Drawing::Image>();
72  auto visualEffectContainer = std::make_shared<Drawing::GEVisualEffectContainer>();
73  DrawImageRectAttributes attr;
74
75  auto geRender = std::make_shared<GraphicsEffectEngine::GERender>();
76  auto outImage = geRender->ApplyImageEffect(canvas, *visualEffectContainer, image, attr.src, attr.src, Drawing::SamplingOptions());
77```
78
79