Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何使旋转图像填充颤振中的可用空间?_Flutter_Transform - Fatal编程技术网

Flutter 如何使旋转图像填充颤振中的可用空间?

Flutter 如何使旋转图像填充颤振中的可用空间?,flutter,transform,Flutter,Transform,我试图将图像显示为圆形菱形。我可以让旋转工作,如果我使用debugPaintSizeEnabled,它会显示菱形,但图像不会填充该空间。我怎样才能让它膨胀以填充钻石 以下是一个屏幕截图: 这是创建菱形小部件的代码: Transform.rotate( angle: math.pi / 4, child: ClipRRect( borderRadius: new BorderRadius.circular(24.0), ch

我试图将图像显示为圆形菱形。我可以让旋转工作,如果我使用debugPaintSizeEnabled,它会显示菱形,但图像不会填充该空间。我怎样才能让它膨胀以填充钻石

以下是一个屏幕截图:

这是创建菱形小部件的代码:

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。这也有同样的问题。不过,帕维尔的解决方案奏效了