Flutter画布未按预期渲染

vuv7lop3  于 2022-12-27  发布在  Flutter
关注(0)|答案(1)|浏览(150)

我正在尝试用Canvas.drawLine方法渲染一个带有抖动画布的网格。
有些线呈现为半透明,有些线甚至没有呈现在画布上。whe

class Background extends PositionComponent with HasGameRef<RokokoGame>{

  Offset start = Offset.zero;
  Offset end = Offset.zero;

  // will be different across devices
  late final double canvasX;
  late final double canvasY;

  final int cellSize = GameConfig.cellSize;

  Background(this.canvasX, this.canvasY);

  @override
  Future<void>? onLoad() {
    start = Offset(0, 0);
    end = Offset(this.canvasX, this.canvasY);
  }

  @override
  void render(Canvas canvas) {
    canvas.drawRect(Rect.fromPoints(Offset.zero, end), Styles.white);
    _drawVerticalLines(canvas);
    _drawHorizontalLines(canvas);
  }

  void _drawVerticalLines(Canvas c) {
    for (double x = start.dx; x <= end.dx; x += cellSize) {
      c.drawLine(Offset(x, start.dy), Offset(x, end.dy), Styles.red);
    }
  }

  void _drawHorizontalLines(Canvas c) {
    for (double y = start.dy; y <= end.dy; y += cellSize) {
      c.drawLine(Offset(start.dx, y), Offset(end.dx, y), Styles.blue);
    }
  }
}
qoefvg9y

qoefvg9y1#

因此,我能够通过在Styles类中应用一些笔划宽度来解决这个问题。

class Styles {
  static Paint white = BasicPalette.white.paint();
  static Paint blue = BasicPalette.blue.paint()..strokeWidth = 3;
  static Paint red = BasicPalette.red.paint()..strokeWidth = 3;
}

相关问题