Russian Qt Forum

Qt => Qt Quick => Тема начата: Вячеслав от Июль 18, 2016, 20:33



Название: QML картинка в виде окружности.
Отправлено: Вячеслав от Июль 18, 2016, 20:33
Доброе время форумчане.

Прошу подсказать или направить в нужное русло.

есть картинка (прямоугольная)
как сделать так чтобы она превратилась в окружности.

вопрос наверно тривиальный, но я не нашел как это сделать.

Заранее спасибо.


Название: Re: QML картинка в виде окружности.
Отправлено: kuzulis от Июль 18, 2016, 21:10
Картинка - никак. Фотошопом.
Rectangle - задать радиусы закругления.


Название: Re: QML картинка в виде окружности.
Отправлено: Igors от Июль 19, 2016, 11:49
есть картинка (прямоугольная)
как сделать так чтобы она превратилась в окружности.
Нужно просто "обрезать края" или деформировать картинку? Не знаю "чудесных средств" чтобы сделать сделать это автоматом, но и то и другое написать несложно,


Название: Re: QML картинка в виде окружности.
Отправлено: Вячеслав от Июль 19, 2016, 17:33
наверно неправильно выразился.

есть картинка она прямоугольная.
я ее хочу воткнуть в Rectangle (с округленными углами)

если картинку втыкаю в Rectangle - то картинка отображается все равно в своем изначальном положении.

пока вышел из положения при помощи OpacityMask

но хотелось бы без OpacityMask, т.к. Rectangle - может менять размер и надо чтобы картинка так же была внутри этого Rectangle с обрезом


Название: Re: QML картинка в виде окружности.
Отправлено: Отражение луны от Июль 22, 2016, 00:29
OpacityMask - единственное верное решение.
Вы можете указать загругленный Rectangle как maskSource, и тогда все у Вас будет рисоваться и ресайзаться как надо.
Код:
Rectangle {
        id: background
        anchors.fill: parent
        radius: 3
    }
...
    Image {
        id: photoImage
        anchors.fill: parent
        fillMode: Image.PreserveAspectCrop
        asynchronous: true
        smooth: true
        source: "file:///some.jpg"
        visible: false
    }

    OpacityMask {
        id: roundedPhoto
        anchors.fill: background
        source: photoImage
        maskSource: background
        visible: (photoImage.status==Image.Ready)
    }


Название: Re: QML картинка в виде окружности.
Отправлено: carrygun от Июль 22, 2016, 05:54
наверно неправильно выразился.

есть картинка она прямоугольная.
я ее хочу воткнуть в Rectangle (с округленными углами)

если картинку втыкаю в Rectangle - то картинка отображается все равно в своем изначальном положении.

пока вышел из положения при помощи OpacityMask

но хотелось бы без OpacityMask, т.к. Rectangle - может менять размер и надо чтобы картинка так же была внутри этого Rectangle с обрезом


Сделать у Rectangle clip: true?


Название: Re: QML картинка в виде окружности.
Отправлено: BuRn от Август 01, 2016, 20:23
наверно неправильно выразился.

есть картинка она прямоугольная.
я ее хочу воткнуть в Rectangle (с округленными углами)

если картинку втыкаю в Rectangle - то картинка отображается все равно в своем изначальном положении.

пока вышел из положения при помощи OpacityMask

но хотелось бы без OpacityMask, т.к. Rectangle - может менять размер и надо чтобы картинка так же была внутри этого Rectangle с обрезом


Сделать у Rectangle clip: true?
Оно не режет картинки к сожалению, тут либо самому картинку изменять в плюсах, либо использовать то, что предложил Komorebi. Но имхо оно начинает жестко проседать если картинок много, я бы рекомендовал через imageProvider самому закруглять картинку


Название: Re: QML картинка в виде окружности.
Отправлено: Вячеслав от Сентябрь 05, 2016, 13:29
Спасибо Komorebi.

Работает так как надо, я не думал что можно в качестве маски передавать Rectangle/

Еще раз СПАСИБО.