Russian Qt Forum
Май 29, 2024, 12:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QML картинка в виде окружности.  (Прочитано 6674 раз)
Вячеслав
Новичок

Offline Offline

Сообщений: 10


Просмотр профиля
« : Июль 18, 2016, 20:33 »

Доброе время форумчане.

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

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

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

Заранее спасибо.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1 : Июль 18, 2016, 21:10 »

Картинка - никак. Фотошопом.
Rectangle - задать радиусы закругления.
Записан

ArchLinux x86_64 / Win10 64 bit
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Июль 19, 2016, 11:49 »

есть картинка (прямоугольная)
как сделать так чтобы она превратилась в окружности.
Нужно просто "обрезать края" или деформировать картинку? Не знаю "чудесных средств" чтобы сделать сделать это автоматом, но и то и другое написать несложно,
Записан
Вячеслав
Новичок

Offline Offline

Сообщений: 10


Просмотр профиля
« Ответ #3 : Июль 19, 2016, 17:33 »

наверно неправильно выразился.

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

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

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

но хотелось бы без OpacityMask, т.к. Rectangle - может менять размер и надо чтобы картинка так же была внутри этого Rectangle с обрезом
Записан
Отражение луны
Гость
« Ответ #4 : Июль 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)
    }
« Последнее редактирование: Июль 22, 2016, 00:32 от Komorebi » Записан
carrygun
Гость
« Ответ #5 : Июль 22, 2016, 05:54 »

наверно неправильно выразился.

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

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

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

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


Сделать у Rectangle clip: true?
Записан
BuRn
Гость
« Ответ #6 : Август 01, 2016, 20:23 »

наверно неправильно выразился.

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

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

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

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


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

Offline Offline

Сообщений: 10


Просмотр профиля
« Ответ #7 : Сентябрь 05, 2016, 13:29 »

Спасибо Komorebi.

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

Еще раз СПАСИБО.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 19.