| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import 'dart:math';
- import 'package:flutter/material.dart';
- import 'package:matrix4_transform/matrix4_transform.dart';
- void main() {
- runApp(MaterialApp(
- home: Scaffold(
- body: Center(
- child: SizedBox(width: 300, height: 300,
- child: Container(
- color: Colors.blue,
- child: const TestWidget()
- )
- ) ,
- ),
- )
- ));
- }
- Matrix4 _rotate(double angle, Offset focalPoint) {
- var c = cos(angle);
- var s = sin(angle);
- var dx = (1 - c) * focalPoint.dx + s * focalPoint.dy;
- var dy = (1 - c) * focalPoint.dy - s * focalPoint.dx;
- // ..[0] = c # x scale
- // ..[1] = s # y skew
- // ..[4] = -s # x skew
- // ..[5] = c # y scale
- // ..[10] = 1 # diagonal "one"
- // ..[12] = dx # x translation
- // ..[13] = dy # y translation
- // ..[15] = 1 # diagonal "one"
- return Matrix4(c, s, 0, 0, -s, c, 0, 0, 0, 0, 1, 0, dx, dy, 0, 1);
- }
- class TestWidget extends StatelessWidget{
- const TestWidget({super.key});
- @override
- Widget build(BuildContext context) {
- var tran = Matrix4.identity();
- final size =MediaQuery.of(context).size;
- // tran.setTranslation(Matrix4.translationValues(100, 120, 0).getTranslation());
- tran = Matrix4Transform()
- .rotateDegrees(45, origin: Offset(150, 150)).matrix4 * tran;
- // tran = Matrix4Transform()
- // .rotateDegrees(45, origin: Offset(150, 150)).matrix4 * tran;
- //
- return Transform(
- transform: tran,
- child: const Text('测试', style: TextStyle(fontSize: 50),),
- );
- }
- }
|