Flutter Transform 学习

Transform可以在其子组件绘制时对其应用一些矩阵变换来实现一些特效,允许在渲染子部件之前对它们进行变换。

一、Transform构造函数与属性

class Transform extends SingleChildRenderObjectWidget {/// Creates a widget that transforms its child.const Transform({super.key,required this.transform,this.origin,this.alignment,this.transformHitTests = true,this.filterQuality,super.child,});

Transform重要属性如下:

属性作用
transform在绘画过程中用来变换子对象的矩阵。
origin应用矩阵的坐标系原点(相对于此渲染对象的左上角)。
alignment原点的对齐方式。
child子部件。
filterQualityFilterQuality 用于 控制图片 和 图形 在 缩放时的抗锯齿效果 。它影响渲染时图像的质量和性能。

 

  • transform 
    
  /// The matrix to transform the child by during painting.final Matrix4 transform;

transform属性是一个4x4的矩阵,它定义了部件的变换方式。可以使用Matrix4类提供的方法来创建不同类型的变换矩阵。

  • origin
  /// The origin of the coordinate system (relative to the upper left corner of/// this render object) in which to apply the matrix.////// Setting an origin is equivalent to conjugating the transform matrix by a/// translation. This property is provided just for convenience.final Offset? origin;

origin属性定义了变换的基点,应用矩阵的坐标系原点(相对于此渲染对象的左上角)。

  • alignment
/// The alignment of the origin, relative to the size of the box.
///
/// This is equivalent to setting an origin based on the size of the box.
/// If it is specified at the same time as the [origin], both are applied.
///
/// An [AlignmentDirectional.centerStart] value is the same as an [Alignment]
/// whose [Alignment.x] value is `-1.0` if [Directionality.of] returns
/// [TextDirection.ltr], and `1.0` if [Directionality.of] returns
/// [TextDirection.rtl].	 Similarly [AlignmentDirectional.centerEnd] is the
/// same as an [Alignment] whose [Alignment.x] value is `1.0` if
/// [Directionality.of] returns	 [TextDirection.ltr], and `-1.0` if
/// [Directionality.of] returns [TextDirection.rtl].
final AlignmentGeometry? alignment;

alignment变换的对齐方式。

  • filterQuality
  /// The filter quality with which to apply the transform as a bitmap operation.////// {@template flutter.widgets.Transform.optional.FilterQuality}/// The transform will be applied by re-rendering the child if [filterQuality] is null,/// otherwise it controls the quality of an [ImageFilter.matrix] applied to a bitmap/// rendering of the child./// {@endtemplate}final FilterQuality? filterQuality;

FilterQuality 用于 控制图片 和 图形 在 缩放时的抗锯齿效果 。它影响渲染时图像的质量和性能。

  • child
  /// The widget below this widget in the tree.////// {@macro flutter.widgets.ProxyWidget.child}final Widget? child;

child子部件。

二、Transform作用

Transform用于对其子组件应用变换效果,如平移、旋转、缩放或倾斜。

三、Transform示例

平移

平移通过Transform.translate()方法来实现,通过设置offset参数来指定平移的距离。

import 'package:flutter/material.dart';class TransformTranslatePage extends StatelessWidget {const TransformTranslatePage({super.key});@overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(backgroundColor: Colors.grey[300],body: Center(child: Column(mainAxisAlignment: MainAxisAlignment.spaceEvenly,children: [Container(color: Colors.grey[400],child: Transform.translate(offset: Offset(50, 0),child: Container(width: 100,height: 100,color: Colors.blue,child: Center(child: Center(child: Text("平移效果",style: TextStyle(color: Colors.white),),),),),),),Container(color: Colors.grey[500],child: Transform.translate(offset: Offset(0, 50),child: Container(width: 100,height: 100,color: Colors.red,child: Center(child: Text("向下平移",style: TextStyle(color: Colors.white),),),),),)],),),),);}
}

 

 

旋转

import 'package:flutter/material.dart';class TransformRotatePage extends StatelessWidget {const TransformRotatePage({super.key});@overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(backgroundColor: Colors.grey[300],body: Center(child: Column(mainAxisAlignment: MainAxisAlignment.spaceEvenly,children: [Container(color: Colors.grey[400],child: Transform.rotate(angle: 0.5,child: Container(width: 100,height: 100,color: Colors.blue,child: Center(child: Text("旋转效果",style: TextStyle(color: Colors.white),),),),),),Container(color: Colors.grey[600],child: Transform.rotate(angle: 1.0,child: Container(width: 100,height: 100,color: Colors.orange,child: Center(child: Text("旋转效果",style: TextStyle(color: Colors.white),),),),),)],),),),);}
}

缩放

import 'package:flutter/material.dart';class TransformScalePage extends StatelessWidget {const TransformScalePage({super.key});@overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(backgroundColor: Colors.grey[400],body: Center(child: Column(mainAxisAlignment: MainAxisAlignment.spaceEvenly,children: [Container(width: 100,height: 100,color: Colors.blue,child: Center(child: Text("缩放效果",style: TextStyle(color: Colors.white),),),),Container(color: Colors.grey[800],child: Transform.scale(scale: 1.5,child: Container(width: 100,height: 100,color: Colors.orange,child: Center(child: Text("缩放效果",style: TextStyle(color: Colors.white),),),),),)],),),),);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/445717.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

231水果滑块喜+1

有需求可以联系博主 let v Died_in2021

飞机大战ai通过dqn实现

借鉴 飞机大战源码 github 王者荣耀ai训练(试了一下,发现电脑带不动,就改了一点,训练其他游戏) 源码 通过网盘分享的文件:PlaneWar (2).zip [链接](https://pan.baidu.com/s/1N4OorR7b36Zml8MadGmI6g?pwd1234&#xf…

经纬恒润荣获2024中国汽车供应链大会创新成果奖

2024年9月24日-26日,2024中国汽车供应链大会暨第三届中国新能源智能网联汽车生态大会在武汉隆重举办。本届大会以“新挑战、新对策、新机遇——推动中国汽车供应链可持续发展”为主题,集聚政府主管领导、行业专家、汽车及零部件企业精英和主流媒体&#…

Journey Training:o1的一次复现尝试,极长思维链的合成

知乎:啦啦啦啦(已授权)链接:https://zhuanlan.zhihu.com/p/902522340 论文:O1 Replication Journey: A Strategic Progress Report链接:https://github.com/GAIR-NLP/O1-Journey 这篇论文记录了一次o1复现尝…

《Java基础》变量和数据类型

综述 在开始学习变量之前,我们思考一下为什么需要使用变量。 首先我们从小开始学习加法减法的时候,后来我们再学更难的东西就是代数,其中的x和y是我们要求解的内容,这些内容就是变量。 变量是人的思维的提升,没有变量…

armv7-a mmu 配置

L1 page table ​ L1 page table 将 32位内核的整个 4GB 地址空间划分为 4096 个大小相等的部分(entry),每个部分映射 1 MB 范围内的虚拟内存空间。 ​ 每个条目 (entry) 可以保存指向二级转换的地址,也可以保存用于表示这 1MB …

胤娲科技:AI绘梦师——一键复刻梵高《星空》

想象一下,你手中握有一张梵高的《星空》原图,只需轻轻一点,AI便能化身绘画大师,一步步在画布上重现那璀璨星河。 这不是科幻电影中的桥段,而是华盛顿大学科研团队带来的“Inverse Painting”项目,正悄然改变…

uniapp__微信小程序使用秋云ucharts折线图双轴

1、子组件 <template><view class"charts-box"><qiun-data-charts type"line":opts"computedOpts":chartData"chartData"/></view> </template><script> export default {props: {chartData: {t…

后端——eclipse实现前端后端的交互(2)

1.新建前后端文件 新建HTML文件和后端交互Servlet文件。新建文件的地址也有所要求&#xff0c;Servlet文件要在JavaResources下的src中。HTML文件在WebContent下 2. 引入jqury文件 后端与前端的互传需要通过jQuery的ajax,所以要传入jQuery的包到eclipse中&#xff0c;传入位置…

Apache HTTP Server 配置SSL证书(Windows)

Apache2.4.39 HTTP Server 配置SSL证书 1. 申请证书 申请证书步骤(略) 证书名称如下: ca-bundle.crt xxx_com.crt xxx_com.key2. 配置 证书位置:Apache2.4.39\conf\ssl Apache2.4.39\conf\ssl修改两个配置文件: 0localhost_80.conf <VirtualHost *:80>Rewrite…

QGroundControl最新版本MacOS平台编译(使用CMakeLists.txt)

1.下载源码: git clone https://github.com/mavlink/qgroundcontrol.git --recursive 2.安装依赖: brew install GStreamer 设置环境变量:GST_PLUGIN_PATH 安装SDL2: brew install SDL2

【记录】PPT|PPT 箭头相交怎么跨过

众所周知&#xff0c;在PPT中实现“跨线”效果并非直接可行&#xff0c;这一功能仅存在于Visio中。然而&#xff0c;通过一些巧妙的方法&#xff0c;我们可以在PPT中模拟出类似的效果。怎么在PPT中画交叉但不重叠的线-百度经验中介绍了一种方法&#xff0c;而本文将介绍一种改进…

浅谈虚拟电厂在分布式光伏发电应用示范区中的应用及前景

0引言 随着电力体制改革的持续推进&#xff0c;电力市场将逐步建立和完善&#xff0c;未来的售电主体也将随着配售电业务的逐步放开而日益多元化&#xff0c;新的政策不断鼓励分布式电源和微电网作为独立的配售电市场主体推动运营模式的创新。与微电网所采取的就地应用为控制目…

springboot001基于SpringBoot的在线拍卖系统(论文+源码)_kaic

医护人员排班系统 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了医护人员排班系统的开发全过程。通过分析医护人员排班系统管理的不足&#xff0c;创建了一个计算机管理医护人员排班系统的方案。文章介绍了医…

InfluxDB持久层封装

InfluxDB持久层封装 了解如何使用spring-boot来操作InfluxDB数据库&#xff0c;首先我们来看下整个的系统结构图例&#xff1a; 对比下mybatis中的执行流程&#xff1a; 1_自动装配 首先&#xff0c;我们来看下第一步自动装配&#xff1a;依赖spring-boot自动装配出InfluxDB对…

ubuntu22.04 ROS2 - 安装

参考链接:Ubuntu 22.04 LTS安装ROS2 (ros-humble-desktop)-CSDN博客 1、安装测试 ros2 run demo_nodes_cpp listener再开一个终端ros2 run demo_nodes_cpp listener2、小海龟模拟器 ros2 run turtlesim turtlesim_noderos2 run turtlesim turtle_teleop_key两个终端分别执行…

Linux内核与基础命令学习总结

Linux操作系统 Linux操作系统博大精深&#xff0c;其中对线程&#xff0c;IO&#xff0c;文件系统等概念的实现都很有借鉴意义。 ​ 文件系统和VFS 文件系统的inode上面讲过了。VFS主要用于屏蔽底层的不同文件系统&#xff0c;比如接入网络中的nfs文件系统&#xff0c;亦或…

用SpringBoot给Servlet容器Tomcat打war包步骤

首先写一个类来代替启动类 先在SpringBoot项目里打开pom.xml导入依赖,原本SpringBoot里面spring-boot-starter-web依赖里面有Tomcat,所以我们要先在spring-boot-starter-web里面导入依赖,把Tomcat给排除掉,并且加上你要打的war类型依赖 然后先刷新,再清除,最后再打包 成功之后,…

2024最新版安装教程!Python安装+PyCharm安装使用教程!!(非常简单)

Python下载安装 一、进入Python官网首页&#xff0c;下载最新版的Python 官方网址&#xff1a;Download Python | Python.org 鼠标悬浮在Downloads&#xff0c;选择最新版本 注意&#xff1a;由于Python官网服务器设立在国外&#xff0c;所以下载速度非常慢&#xff0c;我这…

管家婆-本地化-无法打开处理,链接失败

一、首先检测sql是否正常 二、检测管家婆svr是否正常 三、检测管家婆服务正常 阿雪技术观 拥抱开源与共享&#xff0c;见证科技进步奇迹&#xff0c;畅享人类幸福时光&#xff01; 让我们积极投身于技术共享的浪潮中&#xff0c;不仅仅是作为受益者&#xff0c;更要成为贡献…