当前位置: 首页 > news >正文

flutter背景贴图的困难总结

需求:一张前景图,一张背景图。背景图可以放大缩小,可以平移。

复盘一下整个烦闷之旅。

困难一,保存成文件。

遇到了几个十分难受的问题。 现在回看是很简单,代码也没几行,可中间的思考过程是十分痛苦的, 痛苦源自于,看起来很简单,可就是无法思考出来的挣扎。

用canvas完成缩放,平移,这是最基本的常识。而一开始却偏偏没那么做。走上歧途的原因是,觉得canvas的大小是有前景图决定的,对前景图放大缩小,和对背景图没有关系。实际上用前景图的大小调canvas.saveLayer(), 可以再次扩大canvas。

一开始就走上了自己处理缩放,平移的道路了。可是怎么也处理不好。

  1. 平移位置总是偏移。

这个坑,等后面采用canvas缩放策略的时候,还会遇到。UI上取得平移位置距离,是UI上view的, 并不是真实图片上的平移动,这是两回事,需要做好转换。

  1. 前景图的Rect和缩放后的背景图Rect,交叉重叠部分的计算,也总是不对。放大后移出前景区域后,就算不准了。中间做了很多无谓的尝试。关键是没有认清第一点。
  2. 最后,想想以后还要做旋转的功能, 这个自己是无法处理的。只能依赖于canvas旋转。所以觉得正确的道路,还是应该在直接处理canvas上。

直接处理canvas。 做好三点就可以了。

  1. 缩放和旋转,是不需要转换的。但是平移是需要的。要从UI view转到真实图。
  2. 转完以后,要缩放回去,因为canvas会再缩放回来。不然就多了。
  3. 背景图在UI view上的大小占比,要转成在真实图上的大小。

困难二,花屏

在拖动背景图时, 背景图的下边缘会留下一条条的线。这肯定又是flutter渲染器的bug,不清楚什么原因。用stack包裹三个customPianter时,渲染就会出现问题。最后发现不用customPianter,单纯的用Image.file()替换背景图的customPianter。就没有问题了。

相关文章:

  • LDRA Testbed(TBrun)软件单元测试_实例讲解(指针类型的处理)
  • 自然语言处理与Transformer模型:革新语言理解的新时代
  • LlamaGen:自回归模型的图像生成革命
  • 大语言模型系列-Transformer
  • 人工智能概论 | 基于A*算法的8数码问题求解
  • 绝区肆--2024 年AI安全状况
  • wordpress网站添加一个临时维护功能
  • 车辆出险报告API接口及使用
  • 算法数据结构必备篇章2
  • 5.opencv深浅拷贝
  • O2OA(翱途)开发平台 V9.1 即将发布,更安全、更高效、更开放
  • 分享五款软件,成为高效生活的好助手
  • 2024年信息素养大赛图形化编程小低组复赛真题-附答案 6547网
  • Linux内网端口转公网端口映射
  • 【Go】常见的变量与常量
  • 《深入 React 技术栈》
  • 【面试系列】之二:关于js原型
  • const let
  • ECMAScript入门(七)--Module语法
  • es6
  • HTTP中的ETag在移动客户端的应用
  • Java|序列化异常StreamCorruptedException的解决方法
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • React-redux的原理以及使用
  • Spark学习笔记之相关记录
  • Spring Boot MyBatis配置多种数据库
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 程序员最讨厌的9句话,你可有补充?
  • 构建二叉树进行数值数组的去重及优化
  • 机器学习中为什么要做归一化normalization
  • 区块链分支循环
  • 如何设计一个微型分布式架构?
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 我是如何设计 Upload 上传组件的
  • 小程序 setData 学问多
  • 携程小程序初体验
  • 学习使用ExpressJS 4.0中的新Router
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​14:00面试,14:06就出来了,问的问题有点变态。。。
  • ​ssh免密码登录设置及问题总结
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • # 数仓建模:如何构建主题宽表模型?
  • #java学习笔记(面向对象)----(未完结)
  • #Z0458. 树的中心2
  • $.ajax,axios,fetch三种ajax请求的区别
  • (12)Hive调优——count distinct去重优化
  • (2024,RWKV-5/6,RNN,矩阵值注意力状态,数据依赖线性插值,LoRA,多语言分词器)Eagle 和 Finch
  • (27)4.8 习题课
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (void) (_x == _y)的作用
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包