2014-01-15 4 views
2

Я использую FLTK для создания графического интерфейса, и мне нужно нарисовать на экране несколько полигонов (фигур).FLTK заполненный многоугольник

Из их документации fl_complex_polygon:

Start and end drawing a convex filled polygon. 

Проблема? Полигон не заполнен, но отображается только штрих. Как сделать полигон заполненной фигурой?

Мой код выглядит следующим образом:

fl_color(FL_RED); 
fl_begin_complex_polygon(); 
fl_line(mX,mY, x, y); 
.... 
fl_line(mX,mY, x, y); 
fl_end_complex_polygon(); 

Другой связанный с этим вопрос: Как я могу перерисовывать FL_BOX? Должен ли я рисовать пустой (фоновый) прямоугольник над ним или есть какая-то функция FL_BOX::clear()?

ответ

2

Re: заполненный многоугольник. Многоугольник состоит из вершин: не из линий. Он не знает о строках. Используйте fl_vertex вместо fl_line.

Re: fl_box Есть два fl_boxes, в зависимости от случая.

fl_box устанавливает тип коробки Fl_Box от Fl_Box.H рисует коробку. Код перерисовки будет автоматически перерисовываться, если он поврежден. Скажем, что виджет называется box. Вызовите окно-> повреждение (FL_USER1), чтобы принудительно выполнить перерисовку.

Для более уловок, взгляните на http://seriss.com/people/erco/fltk/

+0

Спасибо, полигон работает. Если я использую this-> damage(), он будет рисовать только то, что у меня есть внутри моей функции, а не ярлык или другой по умолчанию прямоугольник. Невозможно также инициировать перерисовку Fl_Box, например, рисовать метки. Если я добавлю 'Fl_Box :: draw()' до или после повреждения, то рисунки будут стекаться. – Cristy

+0

Урон просто устанавливает флаг. Он будет только перерисовываться в петле перерисовывания. То есть остановить мерцание. Если вы нажмете ничью, вы можете немного мерцать. Являются ли метки, которые вы хотите перерисовать, принадлежать Fl_Box? Если они этого не сделают, вам нужно установить повреждение родителя меток. – cup

+0

Хорошо, вот как я это сделал: я использовал 'Fl_Box :: draw()'. Проблема заключалась в том, что стиль коробки был пустым фоном, поэтому в следующий раз, когда он был нарисован, не было ничего, чтобы покрыть ширину старых чертежей. Исправлено было установить стиль окна. http://www.fltk.org/doc-1.1/common.html#boxtypes – Cristy

Смежные вопросы