Как рисовать на QGraphicsScene не перекрывая уже нарисованные Items без клиппинга?
Здравствуйте.
После отрисовки QGraphicsItem (итемов) на QGraphicsScene (сцене) необходимо закрасить всё оставшееся пространство сцены одним цветом (именно в таком порядке, сначала рисуем итемы, потом закрашиваем остатки сцены). Сначала хотел использовать клиппинг, но в QtAssistant написано: "...you should generally avoid using clipping if you can (e.g., if your items always draw inside boundingRect() or shape() boundaries, clipping is not necessary).". Если я правильно понял, в случае когда итемы рисуются только внутри boundingRect можно как то обойтись без клиппинга. Подскажите пожалуйста, действительно ли это так и как это сделать? Заранее спасибо!
@Perzh и всеже. Т.к. логика сцены: рисуется задний план, компонуются item-ы, определяются границы viewport и в нем рисуются item-ы, после рисуются передний план. Если хотим нарушить эту логику - просядим по производительности
@DancingOnWater, мне нужно генерировать кадры для прозрачной GIF анимации. В GIF файле нет альфа канала, есть только 1 цвет, который помечается как прозрачный. Этим цветом мне нужно залить всё кроме итемов на сцене. Если прозрачный цвет использовать как фоновый, то итемы получаются некрасивые (края зубчатые см. otvet.mail.ru/question/170432085). Нужно рисовать итемы на фоне, чтобы цвета смешивались с фоном и зубчики пропали бы. Короче, сплошное извращение
@DancingOnWater, не уверен что мне это поможет. Я могу рисовать гладко не сцене, мне нужно чтобы итемы были гладкими на GIF. Для этого мне нужно учитывать фон, при этом сделав его еще и невидимым (прозрачным) на конечном GIF файле.
@DancingOnWater, GIF я формирую не средствами Qt =) Вот включу я антиалиасинг. Итемы на сцене будут гладкие на фоне прозрачного цвета (у меня это чёрный цвет). Но за счёт чего эта гладкость достигается? Вокруг итема есть кайма из полупрозрачнх пикселей. Эти пиксели смешиваются с цветом фона и создают иллюзию гладкости - круги круглые, кривые - кривые, а не ломаные. Когда я положу этот кадр в GIF все черные пиксели будут прозрачные, и вокруг итема появится тёмная кайма (осталась изза полупрозрачности - цвет итема смешался с чёрным и получилось что то среднее). Без полупрозрачности гладко не нарисуешь, но она же мешает мне, оставляя на кадрах то, что не нужно. Вообщем, спасибо большое за ответы, но мне кажется, что без тут не обойтись без клипинга и т.п.