绘制与渲染
阅读时间约 4 分钟
G6 提供了一系列绘制和渲染相关的 API,用于控制图形元素的显示过程。在 G6 中,绘制和渲染是两个不同的概念:
理解这些 API 的区别对于优化性能和实现特定效果至关重要。
绘制元素,但不执行布局计算。
draw(): Promise<void>;
说明
draw
方法仅执行元素的绘制过程,不会重新计算布局。
⚠️ 注意: draw
为异步方法,需要使用 await
或 Promise 链式调用来确保绘制完成后再执行后续操作。
示例 1: 基础用法
// 基本用法await graph.draw();
示例 2: 修改节点样式后重新绘制
// 修改节点样式后重新绘制graph.updateNodeData([{id: 'node1',style: {fill: 'red',stroke: 'blue',lineWidth: 2,},},]);// 仅绘制更新后的样式,不重新布局await graph.draw();
示例 3: 批量更新多个元素后一次性绘制
// 更新多个节点graph.updateNodeData([{ id: 'node1', style: { fill: 'red' } }]);graph.updateNodeData([{ id: 'node2', style: { fill: 'blue' } }]);// 更新边graph.updateEdgeData([{ id: 'edge1', style: { stroke: 'green' } }]);// 批量操作完成后绘制await graph.draw();
示例 4: 使用事件监听绘制完成
import { GraphEvent } from '@antv/g6';graph.on(GraphEvent.AFTER_DRAW, () => {console.log('绘制完成');});await graph.draw();
执行完整的渲染流程,包括数据处理、布局计算和绘制。
render(): Promise<void>;
说明
render
方法会执行完整的渲染流程:
示例 1: 基本用法
// 基本用法await graph.render();
示例 2: 添加新数据后渲染
graph.addData({nodes: [{ id: 'node3' }, { id: 'node4' }],edges: [{ id: 'edge2', source: 'node1', target: 'node3' }],});await graph.render();
示例 3: 监听渲染事件
import { GraphEvent } from '@antv/g6';// 渲染开始前graph.on(GraphEvent.BEFORE_RENDER, () => {console.log('渲染开始...');// 显示加载指示器showLoadingIndicator();});// 渲染完成后graph.on(GraphEvent.AFTER_RENDER, () => {console.log('渲染完成');// 隐藏加载指示器hideLoadingIndicator();});graph.render();
清空画布上的所有元素,包括节点、边和其他图形元素。
clear(): Promise<void>;
说明
此方法会删除图中的所有元素,但保留画布配置和样式。这是一个异步方法,返回一个 Promise。
示例
// 基本用法await graph.clear();
draw()
当:
render()
当: