2017-10-31 12 views
0

のQt 5.9.2はQML画像スケール予期しない動作

次QMLコード:私はImage要素にscale: 0.5を追加すると、

enter image description here

ApplicationWindow 
{ 
    visible: true 
    width: 585 
    height: 113 
    title: qsTr("test") 
    Rectangle 
    { 
     width: 585 
     height: 113 
     color: "black" 
     x: 0 
     y: 0 
    } 
    Image 
    { 
     source: "balloon.png" 
     x: 0 
     y: 0 
    } 
} 

が期待される結果を生成します私はこれを得る:

enter image description here

しかし、私はそれがこのように見えるように予想:0.5スケーリングされた画像は、(0,0)に位置していない理由を

enter image description here

誰かが私に説明していただけます、それは明示的にそのプロパティに設定されて座標とスケーリングされたイメージが(0,0)座標に配置されるために、ここで何かできますか? documentation for scaleで述べたように

答えて

1

は、スケーリングはtransformOriginから適用され、デフォルトの原点はItem.Centerあるので、あなたはItem.TopLeftを指定する必要があります。

import QtQuick 2.7 
import QtQuick.Controls 2.0 

ApplicationWindow { 
    visible: true 
    width: 585 
    height: 113 
    title: qsTr("test") 

    Rectangle { 
     width: 585 
     height: 113 
     color: "black" 
     x: 0 
     y: 0 
    } 
    Image { 
     source: "balloon.png" 
     x: 0 
     y: 0 
     scale: 0.5 
     transformOrigin: Item.TopLeft 
    } 
} 

xyプロパティのみ、アイテムの位置にない影響を与えますスケーリングの起源。より高度な変換を行う必要がある場合は、transformプロパティもあります。

+0

また、スケーリングされた 'Item'sにアンカーするとき、境界ボックスを拡大縮小しないので、注意してください。 – derM

関連する問題