Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Tirex от Январь 31, 2006, 20:37



Название: Закрашивание произвольной фигуры
Отправлено: Tirex от Январь 31, 2006, 20:37
Помогите закрасить полигон такого вида.
Состоит из 4х дуг. Координаты есть.
Пробовал так
   QPainterPath path;
   path.moveTo(center_x, center_x);
   //up
   path.arcTo(. . . );
   //right
   path.arcTo(. . . );
   //down
   path.arcTo(. . . );
   //left
   path.arcTo(. . . );
   path.closeSubpath();
   qp.drawPath(path);
рисуется 4 круга  не дуги, и заполняется совсем не то.


Название: Закрашивание произвольной фигуры
Отправлено: Dendy от Январь 31, 2006, 21:20
В arcTo() ставишь не те значения результирующих точек, в результате паинтер закручивает их в другую сторону. Вот пример скруглённого прямоугольника личного приготовления (s - радиус дуг):

Код:
void draw_round_frame( QPainter & p, const QRect & r, int s )
{
p.save();

p.translate( r.left(), r.top() );

QPainterPath path;
path.moveTo( s, 0 );
path.arcTo( 0, 0, s*2, s*2, 90, 90 );
path.arcTo( 0, r.height() - s*2, s*2, s*2, 180, 90 );
path.arcTo( r.width() - s*2, r.height() - s*2, s*2, s*2, 270, 90 );
path.arcTo( r.width() - s*2, 0, s*2, s*2, 0, 90 );
path.closeSubpath();
p.drawPath( path );

p.restore();
}


Название: Закрашивание произвольной фигуры
Отправлено: Tirex от Февраль 01, 2006, 13:26
нужно получить такую фигуру (http://webfile.ru/784756) (верхнюю).
Нарисовать то нарисовал, а вот заполнить не могу.