围绕其中心旋转绘制的文本

用户名

我正在尝试旋转在画布上绘制的文本的中心位置。相反,在下面的代码中,当我按下浮动按钮时,文本绕文本的左上角旋转。

按下按钮可增加角度,该角度传递CanvasPainter给绘制文本。

矩形的左上角最初应位于offset

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  double _angle = 0;
  
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Container(
          child: CustomPaint(
            painter: CanvasPainter(_angle),
            child: Container(),
          )
         ),
        appBar: AppBar(title: Text('Test')),
        floatingActionButton: FloatingActionButton(
          onPressed: () => setState(() => _angle += .1),
          child: const Icon(Icons.add),
      )
      ),
    );
  }
}

class CanvasPainter extends CustomPainter {
  final double angle;
  final Offset offset = Offset(50, 50);
  
  CanvasPainter(this.angle);
  
  @override
  void paint(Canvas canvas, Size size) {
    final fill = TextPainter(
      text: TextSpan(text: 'This is a test', style: TextStyle(fontSize: 80)),
      textDirection: TextDirection.rtl);
    
    fill.layout();
    
    canvas.save();
    //canvas.translate(-fill.width/2, -fill.height/2);
    canvas.rotate(angle);
    canvas.translate(offset.dx, offset.dy);
      
    fill.paint(canvas, Offset.zero);
    
    canvas.restore();
  }
  
  @override
  bool shouldRepaint(CustomPainter oldDelegate) => true;
}
pskink

这是您要做的:

[...]
canvas.save();
final pivot = fill.size.center(offset); 
canvas.translate(pivot.dx, pivot.dy); 
canvas.rotate(angle);
canvas.translate(-pivot.dx, -pivot.dy);
fill.paint(canvas, offset);
canvas.restore();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Qt围绕其中心点旋转文本

来自分类Dev

SVG动画围绕其中心旋转组

来自分类Dev

LibGDX 1.5围绕其中心旋转的精灵

来自分类Dev

如何围绕其中心旋转PShape?

来自分类Dev

[AS3]围绕其中心旋转雪碧

来自分类Dev

围绕其中心旋转多边形

来自分类Dev

使用RotateTransform在其中心周围绘制旋转文本

来自分类Dev

HTML5围绕其中心点旋转文本

来自分类Dev

围绕其中心点旋转UIImageView吗?

来自分类Dev

围绕其中心旋转自定义图像

来自分类Dev

围绕其中心旋转SCNText节点(Swift-Scenekit)

来自分类Dev

使用CABasicAnimation围绕其中心旋转CAShapeLayer弧

来自分类Dev

围绕其中心旋转UIView并保持其大小

来自分类Dev

SFML-使用“变换”围绕其中心旋转精灵

来自分类Dev

EaselJS-围绕其中心旋转形状

来自分类Dev

Android动画可围绕其中心点旋转图像

来自分类Dev

围绕其中心旋转SCNText节点(Swift-Scenekit)

来自分类Dev

围绕中心旋转NSView

来自分类Dev

围绕中心旋转图标

来自分类Dev

围绕中心旋转NSView

来自分类Dev

围绕中心旋转图标

来自分类Dev

当对象最初由其中心旋转时,围绕该点旋转对象

来自分类Dev

围绕中心旋转嵌套元素

来自分类Dev

Android:围绕中心旋转图片?

来自分类Dev

围绕屏幕中心旋转相机

来自分类Dev

如何使用scipy.ndimage.interpolation.affine_transform围绕其中心旋转图像?

来自分类Dev

鼠标移动事件后如何围绕其中心旋转Canvas对象?

来自分类Dev

d3.js:如何在翻译时围绕其中心旋转SVG?

来自分类Dev

如何以支持自动渐变的方式围绕其中心旋转PyTorch图像张量?