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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: заполнение произвольной области в qt  (Прочитано 12979 раз)
Tirex
Гость
« : Май 14, 2005, 19:23 »

как заполнить произвольную область нужным цветом? Например треугольник рисую по точкам на QPixmap, область замкнута.
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #1 : Май 14, 2005, 20:39 »

мне кажется алгоритм заливки самому придется писать!

обычно такую задачу на олимпиадах дают
Записан
Tirex
Гость
« Ответ #2 : Май 14, 2005, 21:41 »

неужели в qt нет такой нужной вещи? :shock:
а насчет написать во 1-ых не знаю с чего начать а во 2-ых вдруг неоптимально напишу. Может пример у кого есть. Поделитесь плиз.
Записан
Hellenna
Гость
« Ответ #3 : Май 14, 2005, 22:02 »

а QCanvasPolygon не подходит?
Записан
Tirex
Гость
« Ответ #4 : Май 14, 2005, 22:12 »

а можно маааленький примерчик ну хоть 3-4 строчки.
Записан
Tirex
Гость
« Ответ #5 : Май 15, 2005, 08:53 »

Сам ответ нашел  

QPainter p
QPointArray pa(3);
pa[0] = QPoint(100, 100);
pa[1] = QPoint(200, 200);
pa[2] = QPoint(300, 300);
p.setBrush( QColor(0xffffff) );
p.drawPolygon(pa);


собственно знал что не может быть такого чтобы не было такой вещи.
Почи как в java. просто и гениально Улыбающийся
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #6 : Май 16, 2005, 08:52 »

Да, но есть одна проблема - если количество точек достаточно больное (порядка нескольких тысяч), функции отрисовки полигонов и полилайнов почему-то (иногда) виснут. У меня была задача отрисовки графика по точкам (большого, точек на 90000), так пришлось отрисовку вручную делать (через QPainre::drawLine).
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #7 : Май 16, 2005, 09:27 »

а тут начинаются такие проблемы:

если у тебя разрешение экрана 1024 точки по X
зачем тебе выводить 90000 точек

прореживай их!

но алгоритм прореживания не должен быть простым!!
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #8 : Май 16, 2005, 09:35 »

алгоритм я сделал, теперь точек 900 выводится. но пилилайн все равно иногда виснет Грустный видать, баг.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #9 : Май 16, 2005, 09:52 »

когда зависнет
попробуй сделать atach to process из дебагера

PS: а не легче qwt использовать? или там нет таких возможностей!
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #10 : Май 16, 2005, 10:11 »

в том-то и дело... что в QWT этот баг не решили, юзают полилайн из Qt...
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #11 : Май 16, 2005, 12:19 »

варианты:

1. Послать баг TrollTech
2. Отладить и шаг 1.
Записан
Tirex
Гость
« Ответ #12 : Май 16, 2005, 18:52 »

Спасибо за полезную информацию
но поле у меня маленькое так что пока polygons устраивает.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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