QML 旋转图像未填充容器

QML Rotated Image not Filling Container

我正在使用 QML 尝试显示图像。我有以下代码:


Rectangle {
  id: border
  anchors {
    top: parent.top; 
    topMargin: vpx(20); 
    right: parent.right;
  }
  color: "black"
  z: 6
  width: 500
  height: 750
            
  Image {
    id: picture
    width: parent.width
    height: parent.height
    transformOrigin: Item.Center
    rotation: (implicitWidth/implicitHeight > 1.3) ? 270 : 0
    anchors.fill: border
    fillMode: Image.PreserveAspectFit
    source: ".../pic.png"
  }

如果旋转设置为 0,它会正确缩放以填充矩形。如果旋转设置为 270,它不会填充矩形 - 它旋转正确,但在两个方向上都在矩形内。它应该扩大更多。

为什么会这样?

编辑:上面的代码已经过编辑。以上所有代码都在一个更大的矩形内。此代码的目的是在图像宽度 > 高度时将图像旋转 90 度。当旋转设置为0时(即高度>宽度不需要旋转),图片显示如下第一种情况。当设置为270(即width > height,需要旋转)时,图片显示如下图第二种情况。我希望它能与第一张填满宽度的图片相媲美,据我所知,“fillMode: Image.PreserveAspectFit”应该有效。

黑色是矩形,红色是图像。

这有点棘手,但你可以试试这个方法:

Rectangle {
    id: border
    anchors {
        top: parent.top;
        right: parent.right;
    }
    color: "black"
    z: 6
    width: 500
    height: 750

    Item {
        id: pictureItem
        transformOrigin: Item.Center
        rotation: (picture.implicitWidth/picture.implicitHeight > 1.3) ? 270 : 0
        anchors.centerIn: parent
        width: rotation == 270 ? parent.height : parent.width
        height: rotation == 270 ? parent.width : parent.height

        Image {
            id: picture
            anchors.fill: parent
            fillMode: Image.PreserveAspectFit
            source: ".../pic.png"
        }
    }
}

我准备了两张测试图:

这就是我用上面的代码块得到的结果: