在Flutter中如何将Matrix4转换为Float64List用于Path.transform()
在Flutter中将Matrix4转换为Float64List用于Path.transform()
你不需要手动做复杂的转换,Matrix4类自带的storage属性直接就能返回符合要求的Float64List,直接传给Path.transform()即可。
示例代码
// 初始化一个带变换的Matrix4 Matrix4 transformMatrix = Matrix4.identity() ..translate(30.0, 40.0) // 平移 ..scale(1.5) // 缩放 ..rotateY(0.3); // 旋转 // 获取Matrix4对应的Float64List Float64List matrixData = transformMatrix.storage; // 对Path应用变换 Path originalPath = Path() ..moveTo(0, 0) ..lineTo(100, 0) ..lineTo(100, 100) ..close(); Path transformedPath = originalPath.transform(matrixData);
说明
Matrix4.storage返回的是矩阵内部以列优先格式存储的16个浮点值的列表,这完全匹配Path.transform()方法对参数的要求,不需要额外处理。直接使用这个属性既高效又能避免手动构造列表可能出现的错误。
内容的提问来源于stack exchange,提问作者Kdigital
相关产品推荐
相关产品推荐

