crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> как узнать координаты пикселе, как узнать координаты пикселе
Гость_Виталий_*
сообщение 30.4.2013, 20:34
Сообщение #1





Гости








    


привет всем! вот такой вопрос ...вот например нарисовал линию m_scene.addLine(420, 285, 250, 300); как узнать координаты пикселев, которая использовала функция addLine() для построения линии?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 1.5.2013, 6:33
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


функция addLine() будет использовать именно указанные координаты (относительно текущей системы координат родительского "контейнера", обычно - сцены)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 1.5.2013, 14:20
Сообщение #3


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Мне кажется тут вопрос в том, чтобы получить список пикселей (x,y, color). Но могу и ошибаться.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Виталий_*
сообщение 2.5.2013, 20:17
Сообщение #4





Гости








    


да, да. мне это и нужно ...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 3.5.2013, 0:42
Сообщение #5


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Скорее всего там что то вроде алгоритма брезенхэма. Только учтите, что нужно помножить все это на ширину кисти, тип линии, сглаживание и блендинг. Так что не думаю что есть простой способ узнать.
Если вы хотите проверять позицию курсора мыши, то вам проще будет переопределить mousePress/ReleaseEvent.
Если сделать маску, то рисуйте например QPainter::CompositionMode_DestinationOut сначала opaque прямоугольник, а потом прозрачной кистью линию, получится маска(не проверял, мысленный эксперимент :lol:) .
В общем задача сложная, возможно вашу задачу можно решить по другому?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
iReset
  опции профиля:
сообщение 11.5.2013, 20:09
Сообщение #6


Участник
**

Группа: Участник
Сообщений: 178
Регистрация: 6.6.2012
Пользователь №: 3414

Спасибо сказали: 23 раз(а)




Репутация:   2  


Цитата(Виталий @ 30.4.2013, 21:34) *
как узнать координаты пикселев...

А что, если для полученной линии установить точность ограничивающего региона с помощью setBoundingRegionGranularity(), равной 1, затем получить этот ограничивающий регион с помощью boundingRegion(), а затем перебрать все точки сцены (или ограничивающего прямоугольника) и посмотреть, входят ли они в регион с помощью QRegion::contains(QPoint).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 12.5.2013, 12:31
Сообщение #7


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Цитата
А что, если для полученной линии установить точность ограничивающего региона с помощью setBoundingRegionGranularity(), равной 1, затем получить этот ограничивающий регион с помощью boundingRegion(), а затем перебрать все точки сцены (или ограничивающего прямоугольника) и посмотреть, входят ли они в регион с помощью QRegion::contains(QPoint).

Круть! :clapping:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.4.2024, 18:54