[Solved] preserve original aspect ratio on Image



  • Hi everyone. I have an Image element and I want to change the with of the image and the height to be scaled automatically to preserve original aspect ratio. Can I do this without created a special function?

    Thanks



  • Hi,

    you can scale a QPixmap or a QImage using the "scaled" method and Qt::KeepAspectRatio option.

    Tony.



  • Oops, this is Qt Quick section ... well, I don't know :)



  • Have you seen the imageelements declarative example that ships with Qt ? Is that what you are looking for ?



  • you mean : "Image element":http://doc.qt.nokia.com/4.7/qml-image.html ?

    Yes I was looking at that, and I'm interested in the fillMode property however:
    "Set this property to define what happens when the image set for the item is smaller than the size of the item."

    And I'm interested in the situation when the picture is larger than the size of item



  • [quote author="2beers" date="1289119699"]And I'm interested in the situation when the picture is larger than the size of item[/quote]

    I just tried setting a larger image (640x340) in a 200x200 image element and the PreserveAspectFit worked just fine.



  • [quote author="chetankjain" date="1289192635"]

    I just tried setting a larger image (640x340) in a 200x200 image element and the PreserveAspectFit worked just fine.
    [/quote]

    can you post your example please, in mine it doesn't. I'm using qt 4.7.0 . Are you using a different version?



  • yup I'm on 4.7.0. In the same Image Element example, you can try to replace the small smiley they are using with a much larger image... that test case would do ? (see ImageCell.qml)

    then you can resize the window and chk how the various image modes work.



  • Thanks. now it seems that is working. I don't know what I did that it didn't work the first time :))



  • 2 beers and cheers to u 2beers :p
    glad it worked :)


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.