G 作为 F2 图表的渲染引擎,具备以下特点:

  • 层次化结构

  • 支持容器、各种图形的创建、修改和销毁

  • 动画

  • 矩阵变换

G 采用层次化结构设计,结构如下:G - 图1

其中:

  • Canvas 画布的入口,包含所有 Group、Shape 对象

  • Group 容器,可包含 Group 和 Shape 对象

  • Shape 为 G 提供的具体的图形

如何引入 G

  1. const F2 = require('@antv/f2');
  2. const { G } = F2;

命名空间

示例:

G - 图2

  1. const { Canvas } = F2.G; // 引入 Canvas
  2. const canvas = new Canvas({
  3. el: 'canvas',
  4. width: 200,
  5. height: 100
  6. }); // 创建 canvas 实例
  7. const container = canvas.addGroup({
  8. zIndex: 2
  9. }); // canvas 添加一个 group
  10. const itemGroup = container.addGroup({
  11. zIndex: 1
  12. }); // container 添加一个 group
  13. itemGroup.addShape('circle', {
  14. attrs: {
  15. x: 5,
  16. y: 0,
  17. r: 5,
  18. fill: 'red'
  19. }
  20. }); // itemGroup 中添加一个圆
  21. itemGroup.addShape('text', {
  22. attrs: {
  23. x: 17,
  24. y: 0,
  25. textAlign: 'start',
  26. textBaseline: 'middle',
  27. fontSize: 12,
  28. fill: 'red',
  29. text: '分类一'
  30. }
  31. }); // itemGroup 中添加一个文本
  32. const bbox = itemGroup.getBBox(); // 获取 itemGroup 的包围盒
  33. container.addShape('rect', {
  34. zIndex: 0,
  35. attrs: {
  36. x: bbox.minX - 5,
  37. y: bbox.minY - 5,
  38. width: bbox.width + 10,
  39. height: bbox.height + 10,
  40. fill: 'rgba(0, 0, 0, 0.09)',
  41. radius: 4
  42. }
  43. }); // container 中添加一个矩形
  44. container.sort(); // container 容器内元素排序
  45. container.moveTo(30, 50); // 将 container 移至 (30, 50)
  46. canvas.addShape('rect', {
  47. zIndex: 0,
  48. attrs: {
  49. x: 0,
  50. y: 0,
  51. width: 200,
  52. height: 100,
  53. fill: 'rgba(0, 0, 0, 0.09)',
  54. radius: 4
  55. }
  56. }); // canvas 中添加一个矩形
  57. canvas.sort(); // canvas 容器内的元素排序
  58. canvas.draw(); // 绘制