Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [QT 4.5] Вывод QPixmap'а поверх другого QPixmap'а 
V
    Опции темы
Moby
Дата 11.5.2009, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 6.10.2008

Репутация: нет
Всего: нет



Всем привет! 

В задаче надо обязательно использовать два QPixmapa, разных размеров. Маленький выводится поверх большого, то есть рисуется вторым по очереди. Так же происходит некоторое движение маленького pixmapa в границах большого.

Теперь чуть подробнее.

Вот есть у меня pixmap, размер 500х500, на котором нужный фон\рисунок, что угодно. 

Есть второй pixmap, размером меньше 200х200 на котором я нарисовал, к примеру, круг. Заливка пиксмапа однородная, то есть может быть либо белой либо черной.

Если я выведу этот пиксмап поверх большого, то есть буду рисовать вторым по очереди, то кроме круга еще будет виден фон маленького pixmap'a. А этого не надо.

Ох как тупо описал. 

В общем, надо что бы при выводе второго пиксмапа выводился только круг, ну или только то что там нарисовано.

Использовать один пиксмап и в нем же рисовать круг и перемещать не поможет, ибо рисуется очень много объектов и перерисовывать их каждую секунду тормозит систему. Вот я решил рисовать сперва на пиксмапе а потом его двигать.

Надеюсь на вашу помощь. 
PM MAIL ICQ   Вверх
SABROG
Дата 11.5.2009, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



На картинке с кругом должен быть alpha канал или хотя бы однородный уникальный цвет фона, который не используется в самом круге, но в этом случае еще доп.движения надо будет делат.

Это сообщение отредактировал(а) SABROG - 11.5.2009, 20:44


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
ecspertiza
Дата 12.5.2009, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

Репутация: 4
Всего: 5



Ну а если ты решил какую то анимацию делать то загляни в сторону соответствующих библиотек, SDL например http://www.libsdl.org/


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
Moby
Дата 12.5.2009, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 6.10.2008

Репутация: нет
Всего: нет



ecspertiza, слово анимация к этой простой задачей не подойдет, мне кажется движение пиксмапа по заданной траектории сложно назвать анимацией. Но за ссылку спасибо, всегда интересно о что то новом узнать.

SABROG, да, фон однородный и цвет этот не присутствует больше нигде. А как именно использовать альфа?  



  

Это сообщение отредактировал(а) Moby - 12.5.2009, 19:02
PM MAIL ICQ   Вверх
SABROG
Дата 12.5.2009, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(Moby @  12.5.2009,  19:01 Найти цитируемый пост)
SABROG, да, фон однородный и цвет этот не присутствует больше нигде. А как именно использовать альфа?  

cоздать картинку с альфа-каналом:
Код

pixmap.fill(QColor(Qt::transparent)); // заполняем картинку прозрачностю
//или
pixmap.fill(QColor(0, 0, 0, 0)); // что тоже самое
//рисуем кружечек на нее
//риусем одну картинку на другую


С готовой картинкой без прозрачности:
QBitmap QPixmap::createHeuristicMask ( bool clipTight = true ) const // берется левый верхний цвет (top left/0,0)
QBitmap QPixmap::createMaskFromColor ( const QColor & maskColor, Qt::MaskMode mode ) const //выборочный цвет делается прозрачным или непрозрачным в зависимости от MaskMode

Код

pix.setMask(pix.createMaskFromColor(Qt::cyan));


P.S.: могу ошибаться


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Moby
Дата 18.5.2009, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 6.10.2008

Репутация: нет
Всего: нет



SABROG, спасибо огромное, какой раз уже помогаешь. Отблагодарить бы пивком тебя. smile
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0436 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.