![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Гость_Виталий_* |
![]()
Сообщение
#1
|
Гости ![]() |
привет всем! вот такой вопрос ...вот например нарисовал линию m_scene.addLine(420, 285, 250, 300); как узнать координаты пикселев, которая использовала функция addLine() для построения линии?
|
|
|
Алексей1153 |
![]()
Сообщение
#2
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
функция addLine() будет использовать именно указанные координаты (относительно текущей системы координат родительского "контейнера", обычно - сцены)
|
|
|
lanz |
![]()
Сообщение
#3
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Мне кажется тут вопрос в том, чтобы получить список пикселей (x,y, color). Но могу и ошибаться.
|
|
|
Гость_Виталий_* |
![]()
Сообщение
#4
|
Гости ![]() |
да, да. мне это и нужно ...
|
|
|
lanz |
![]()
Сообщение
#5
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Скорее всего там что то вроде алгоритма брезенхэма. Только учтите, что нужно помножить все это на ширину кисти, тип линии, сглаживание и блендинг. Так что не думаю что есть простой способ узнать.
Если вы хотите проверять позицию курсора мыши, то вам проще будет переопределить mousePress/ReleaseEvent. Если сделать маску, то рисуйте например QPainter::CompositionMode_DestinationOut сначала opaque прямоугольник, а потом прозрачной кистью линию, получится маска(не проверял, мысленный эксперимент ![]() В общем задача сложная, возможно вашу задачу можно решить по другому? |
|
|
iReset |
![]()
Сообщение
#6
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 178 Регистрация: 6.6.2012 Пользователь №: 3414 Спасибо сказали: 23 раз(а) Репутация: ![]() ![]() ![]() |
как узнать координаты пикселев... А что, если для полученной линии установить точность ограничивающего региона с помощью setBoundingRegionGranularity(), равной 1, затем получить этот ограничивающий регион с помощью boundingRegion(), а затем перебрать все точки сцены (или ограничивающего прямоугольника) и посмотреть, входят ли они в регион с помощью QRegion::contains(QPoint). |
|
|
lanz |
![]()
Сообщение
#7
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Цитата А что, если для полученной линии установить точность ограничивающего региона с помощью setBoundingRegionGranularity(), равной 1, затем получить этот ограничивающий регион с помощью boundingRegion(), а затем перебрать все точки сцены (или ограничивающего прямоугольника) и посмотреть, входят ли они в регион с помощью QRegion::contains(QPoint). Круть! ![]() |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 6.5.2025, 23:31 |