ftBg method

dynamic ftBg(
  1. dynamic x,
  2. dynamic y,
  3. dynamic w,
  4. dynamic h,
)

Implementation

ftBg(x,y,w,h){
  // print('x ${x.runtimeType} ${x}。${kElement['k']}');
  double bgx = x;
  double bgw = w;
  var hhh = kElement['k']?['h']??0.0;
  double bgy = y+hhh,bgh = height-hhh-1;
  var drawData = {};
  var lineData = [];
  var rectData = [];
  //=====================背景线再次重新绘制,因为之前绘制的被不透明附图区域色块覆盖了,这里采用和背景线一样的算法保持线的精准覆盖
  dynamic i = 0;
  double vGap =
      (w / style['bgLineStyle']['property']['vCopies']); //竖线间间距
  double hGap =
      (h / style['bgLineStyle']['property']['hCopies']); //横线间间距
  double vw = w - vGap / 2; //中间竖线的最大检测范围
  double hh = h - hGap / 2; //中间横线的最大检测范围
  rectData.add([
    "drawRect",
    [bgx, bgy, bgw, bgh]
  ]);
  //中间横线
  for (i = hGap; i < hh; i += hGap) {
    if(i>=bgy){
      lineData.addAll([
        [
          "moveTo",
          [x, y + i]
        ],
        [
          "lineTo",
          [x + w, y + i]
        ]
      ]);
    }
  }
  //中间竖线
  for (i = vGap; i < vw; i += vGap) {
    lineData.addAll([
      [
        "moveTo",
        [x + i, bgy],
      ],
      [
        "lineTo",
        [x + i, bgy + bgh-initKXH]
      ]
    ]);
  }
  //边线
  lineData.addAll([
    [
      "moveTo",
      [bgx + w, bgy]
    ],
    [
      "lineTo",
      [bgx + w, bgy+bgh-kXh]
    ],
    [
      "lineTo",
      [bgx, bgy+bgh-kXh]
    ],
    [
      "lineTo",
      [bgx, bgy]
    ]
  ]);
  drawData = {'rectData':rectData,'lineData':lineData};
  return drawData;
}