Flutter 如何使旋转图像填充颤振中的可用空间?
我试图将图像显示为圆形菱形。我可以让旋转工作,如果我使用debugPaintSizeEnabled,它会显示菱形,但图像不会填充该空间。我怎样才能让它膨胀以填充钻石 以下是一个屏幕截图: 这是创建菱形小部件的代码:Flutter 如何使旋转图像填充颤振中的可用空间?,flutter,transform,Flutter,Transform,我试图将图像显示为圆形菱形。我可以让旋转工作,如果我使用debugPaintSizeEnabled,它会显示菱形,但图像不会填充该空间。我怎样才能让它膨胀以填充钻石 以下是一个屏幕截图: 这是创建菱形小部件的代码: Transform.rotate( angle: math.pi / 4, child: ClipRRect( borderRadius: new BorderRadius.circular(24.0), ch
Transform.rotate(
angle: math.pi / 4,
child: ClipRRect(
borderRadius: new BorderRadius.circular(24.0),
child: Transform.rotate(
angle: - math.pi / 4,
child: Image(
image: AssetImage("img/kitten_200_1.jpeg"),
fit: BoxFit.cover,
),
),
),
),
1) Transform.rotate
不会影响子对象的大小和位置-它只会更改子对象的绘制方式
2) 因为屏幕截图上没有白色“三角形”的图像数据,所以要用图像填充它们,我们应该放大图像。但是,它将重叠相邻的小部件,因此我们也将缩小菱形的比例
double L = 100; // image side length
double R = 24; // rounding radius
double k = sqrt(2) - R / L * 2 * (sqrt(2) - 1); // a little bit of geometry
现在缩放
Transform.rotate(
angle: pi / 4,
child: Transform.scale(
scale: 1 / k,
child: ClipRRect(
borderRadius: new BorderRadius.circular(R),
child: Transform.rotate(
angle: - pi / 4,
child: Transform.scale(
scale: k,
child: Image(
image: ...,
width: L,
height: L,
fit: BoxFit.cover,
),
),
),
),
),
);
如果只需要按四分之一旋转图像小部件,可以使用RotatedBox,它可以为您自动调整大小:尝试RotatedBox。这也有同样的问题。不过,帕维尔的解决方案奏效了