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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Закрашивание произвольной фигуры  (Прочитано 5209 раз)
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
Гость
« Ответ #1 : Январь 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
Гость
« Ответ #2 : Февраль 01, 2006, 13:26 »

нужно получить такую фигуру (http://webfile.ru/784756) (верхнюю).
Нарисовать то нарисовал, а вот заполнить не могу.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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