MyTetra Share
Делитесь знаниями!
Как указать центр вращения для картинки в QML
Время создания: 08.01.2018 12:31
Автор: xintrea
Текстовые метки: qt, qml, картинка, вращение, центр вращения, поворот, угол
Раздел: Компьютер - Программирование - Язык C++ (Си++) - Библиотека Qt - QML
Запись: xintrea/mytetra_syncro/master/base/1515403902laxwsrwlwc/text.html на raw.github.com

Язык QML позволяет совершать над графическими элементами различные трансформации. Для вращения элемента (неважно, картинка это или что-то другое) используется трансформация Rotation. Далее идет обяснение вращения на примере картинки, потому что картинки имеют вполне конкретные исходные размеры в пикселях.


Центр вращения картинки задается внутри трансформации Rotation через свойства origin.x и origin.y. Это именно координаты на самой картинке, вокруг которых она будет вращаться.


Вот пример вращения картинки:


Image {

x: 50

y: 50

source: "pic/arrow.png"

transform: Rotation {

origin.x: 10

origin.y: 90

angle: 45

}

}


Можно разобрать его по шагам. Здесь на картинке изображена стрелка. Картинка имеет размер 20x100, и выглядит так:





Если её разместить в окне размером 200x200, и задать координаты (50, 50), то картинка разместится следующим образом:


Код:


Window {

visible: true

width: 200

height: 200


Image {

x: 50

y: 50

source: "pic/arrow.png"


}

}


Картинка:





То есть, пока что координаты задаются по левому верхнему углу. Теперь, если ее просто повернуть на 45 градусов, то это будет выглядеть так:


Код:


Window {

visible: true

width: 100

height: 100


Image {

x: 50

y: 50

source: "pic/arrow.png"

transform: Rotation {

angle: 45

}

}

}


Картинка:





То есть, по прежнему точка привязки в координатах самой картинки находится в левом верхнем углу, и имеет координаты (0, 0).


С помощью origin.x и origin.y можно переместить точку привязки в координаты (10, 90), причем координаты - это опять же координаты в пространстве картинки.


Вообще, все свойства, которые имеют в своем названии origin, например, origin.x, origin.y, transformOrigin, задаются в координатной системе самого элемента, к которому применяется трансформация.


При заданных координатах вращения в (10,90) стрелка будет выглядеть так:


Код:


Window {

visible: true

width: 200

height: 200


Image {

x: 50

y: 50

source: "pic/arrow.png"

transform: Rotation {

origin.x: 10

origin.y: 90

angle: 45

}

}

}


Картинка:




Чтобы лучше понимать, вот еще одна картика с двумя наложенными стрелками, повернутыми на углы 10 и 45 градусов:





На этих картинках хорошо видно, вокруг какой точки идет вращение.


Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования