Получить квадрат из прямоугольника без деформации в QML - PullRequest
0 голосов
/ 08 марта 2019

У меня есть небольшое приложение с Map, и я хочу сделать что-то вроде миникарты.

Иллюстрация проблемы: image

Белая область (прямоугольник, а не квадрат, 1200x800px ) представляет Map, а зеленая область представляет культуру (квадрат с радиусом (около * 1018)* 800x800px )), которую я хочу получить с карты.

Всякий раз, когда я пытался это сделать (я пытался использовать ShaderEffectSource и OpacityMask), целое значение Map было взято и изменено на квадрат, поэтому вывод был искажен.

Iхочу взять только ту часть Map, которая покрыта зеленой областью.

Rectangle {
    id: map
    width: 1200
    height: 800
    color: "white"
    Rectangle {
        id: mask
        anchors.centerIn: parent
        width: 800
        height: 800
        radius: width/2
    }
}

Как мне добиться чего-то подобного?

Спасибо за вашу помощь!

РЕДАКТИРОВАТЬ: Это мой текущий код

ShaderEffectSource {
    visible: true
    id: shaderEffect
    anchors.centerIn: parent
    width: parent.height
    height: parent.height
    sourceItem: map
    layer.enabled: true
    layer.effect: OpacityMask {
        maskSource: Rectangle {
            width: map.height
            height: map.height
            radius: width/2
        }
    }
}

// РЕДАКТИРОВАТЬ: Добавлено изображение

Мой искаженный результат
Map Как вы можете видеть, карта деформирована - исходный размер компонента Map был изменен с 1200x800 до 800x800 (размер круга).Моя цель - обрезать все, что находится за пределами круга.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...