Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Tirex от Май 14, 2005, 19:23



Название: заполнение произвольной области в qt
Отправлено: Tirex от Май 14, 2005, 19:23
как заполнить произвольную область нужным цветом? Например треугольник рисую по точкам на QPixmap, область замкнута.


Название: заполнение произвольной области в qt
Отправлено: Admin от Май 14, 2005, 20:39
мне кажется алгоритм заливки самому придется писать!

обычно такую задачу на олимпиадах дают


Название: заполнение произвольной области в qt
Отправлено: Tirex от Май 14, 2005, 21:41
неужели в qt нет такой нужной вещи? :shock:
а насчет написать во 1-ых не знаю с чего начать а во 2-ых вдруг неоптимально напишу. Может пример у кого есть. Поделитесь плиз.


Название: заполнение произвольной области в qt
Отправлено: Hellenna от Май 14, 2005, 22:02
а QCanvasPolygon не подходит?


Название: заполнение произвольной области в qt
Отправлено: Tirex от Май 14, 2005, 22:12
а можно маааленький примерчик ну хоть 3-4 строчки.


Название: заполнение произвольной области в qt
Отправлено: Tirex от Май 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. просто и гениально :)


Название: заполнение произвольной области в qt
Отправлено: Racheengel от Май 16, 2005, 08:52
Да, но есть одна проблема - если количество точек достаточно больное (порядка нескольких тысяч), функции отрисовки полигонов и полилайнов почему-то (иногда) виснут. У меня была задача отрисовки графика по точкам (большого, точек на 90000), так пришлось отрисовку вручную делать (через QPainre::drawLine).


Название: заполнение произвольной области в qt
Отправлено: Admin от Май 16, 2005, 09:27
а тут начинаются такие проблемы:

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

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

но алгоритм прореживания не должен быть простым!!


Название: заполнение произвольной области в qt
Отправлено: Racheengel от Май 16, 2005, 09:35
алгоритм я сделал, теперь точек 900 выводится. но пилилайн все равно иногда виснет :( видать, баг.


Название: заполнение произвольной области в qt
Отправлено: Admin от Май 16, 2005, 09:52
когда зависнет
попробуй сделать atach to process из дебагера

PS: а не легче qwt использовать? или там нет таких возможностей!


Название: заполнение произвольной области в qt
Отправлено: Racheengel от Май 16, 2005, 10:11
в том-то и дело... что в QWT этот баг не решили, юзают полилайн из Qt...


Название: заполнение произвольной области в qt
Отправлено: Admin от Май 16, 2005, 12:19
варианты:

1. Послать баг TrollTech
2. Отладить и шаг 1.


Название: заполнение произвольной области в qt
Отправлено: Tirex от Май 16, 2005, 18:52
Спасибо за полезную информацию
но поле у меня маленькое так что пока polygons устраивает.