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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Перерисовка QGraphicsItem  (Прочитано 18144 раз)
pashazz
Гость
« Ответ #15 : Апрель 15, 2009, 21:42 »

А setColor как реализовать? Я не совсем понимаю. Там в paintEvent надо вызывать MyItem::paint, или как?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #16 : Апрель 15, 2009, 22:15 »

неработал с грфикой, но по асистенту вроде так:
painter->pen()->setColor ( ...)


(в функции MyItem::paint)
Записан

Юра.
pashazz
Гость
« Ответ #17 : Апрель 15, 2009, 22:38 »

В общем т.к. я плохо понимаю здесь
у меня акк на what.cd есть, стукните в Jabber, помогите с реализацией, а то у меня тупик.
Получите акк, если поможете.
(это ко всем)
Записан
pashazz
Гость
« Ответ #18 : Апрель 15, 2009, 22:39 »

Jabber: pashazz@j.kvx.ru
Записан
kamre
Частый гость
***
Offline Offline

Сообщений: 233


Просмотр профиля
« Ответ #19 : Апрель 16, 2009, 05:03 »

дается точка на плоскости и цвет, которым нужно заполнить фигуру, на которой находится эта точка.
Допустим
PAINT (56,23),7
Найти объект, на котором лежит точка 56,23 и закрасить его цветом 7.
Объекты могут быть: круг, полигон (прямоугольник).
Так понятнее?

Понятнее. Тогда запрашиваем у сцены item, в который попала точка, через метод QGraphicsScene::itemAt. Пытаемся через dynamic_cast привести к указателю на QAbstractGraphicsShapeItem. Если приводится, то вызываем метод QAbstractGraphicsShapeItem::setBrush. Там автоматически вызовется метод update для item и он перерисуется, если виден.
Записан
pashazz
Гость
« Ответ #20 : Апрель 16, 2009, 09:14 »

Спасибо, помогло!
Тогда следующий вопрос.
Мне известны координаты центра круга, и его радиуса.
А в QGraphicsScene::addEllipse нужно подставить координаты прямоугольника, в котором рисуется эллипс
Как мне их вычислить?
Записан
BaltikS
Гость
« Ответ #21 : Апрель 16, 2009, 10:51 »

pashazz, извините конечно, ну видимо 10 класс геометрии прошёл мимо вас.
Код:
QPoint center = ...;    // координата центра круга
qreal radius = ... ;      // радиус круга
painter->drawEllipse(QRectF(center.x()-radius, center.y()-radius, 2*radius, 2*radius));
Наверное так....
Записан
pashazz
Гость
« Ответ #22 : Апрель 16, 2009, 11:42 »

Спасибо, я так и думал
Оказывается в последних 2-х агрументах подставляется диаметр, не радиус, в этом была моя ошибка
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #23 : Май 26, 2009, 17:32 »

А вот интересно, что будет делаться, если допустим нарисовали 2 круга одного цвета так, что они немного соприкасаются... А потом выполнили заливку по координате, попадающей только в один - второй так и останется белым, правда?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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