vid_painter.dart 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import 'package:flutter/material.dart';
  2. import 'dart:ui' as ui;
  3. class VidPainter extends CustomPainter {
  4. VidPainter({required this.image, required this.contextSize});
  5. ui.Image image;
  6. Size contextSize;
  7. @override
  8. void paint(Canvas canvas, Size size) async {
  9. final double scale = size.width / image.width;
  10. final double offsetY = (size.height - image.height * scale) / 2;
  11. // print("${DateTime.now()}容器大小 ContextSize = $contextSize");
  12. // print("${DateTime.now()}图片大小 ImageSize = ${image.width}x${image.height}");
  13. // print("${DateTime.now()}画布大小 CanvasSize = $size");
  14. // print("${DateTime.now()}缩放比例 Scale = $scale");
  15. // print(
  16. // "${DateTime.now()}缩放后宽高 ScaledImageSize = ${image.width * scale}x${image.height * scale}");
  17. // print("${DateTime.now()}偏移量 Offset = $offsetY");
  18. Paint paint = Paint();
  19. canvas.save();
  20. // canvas.scale(scale);
  21. // canvas.drawImage(image, Offset(0, offsetY), paint);
  22. canvas.drawImageRect(
  23. image,
  24. Rect.fromLTWH(0, 0, image.width.toDouble(), image.height.toDouble()),
  25. Rect.fromLTWH(0, offsetY, size.width, image.height * scale),
  26. paint);
  27. canvas.restore();
  28. image.dispose();
  29. }
  30. @override
  31. bool shouldRepaint(covariant CustomPainter oldDelegate) {
  32. return true;
  33. }
  34. }