Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Caduceus от Сентябрь 23, 2010, 08:01



Название: Как объединять две картинки по маске и генерировать эту маску?
Отправлено: Caduceus от Сентябрь 23, 2010, 08:01
У меня есть некий View, на котором рисуется некая картинка. У меня есть две картинки - вот эта которая рисуется и точно такая же, тольько черно-белая.
На этот View можно Drag-n-Drop-ить некоторые объекты, но каждый объект можно стаскивать в какую-то конкртеную область картинки. Что я хочу. Я хочу при стаскивании объекта ту область, куда нельзя бросить объект, рисовать черно-белой (брать из существующей черно-белой картинки), а те области, куда можно броосить - оставлять цветными. Сложно еще в том, что эти области меняются постоянно - поэтому заранее маски черно-белых и цвтеных областей сделать нельзя.

В связи с этим у меня два вопроса:
1) Как программно генерировать такие маски?
2) Как совсбенно по маске и двум изображениям получить третье, суммарное по этим двум и маске?

Спасибо


Название: Re: Как объединять две картинки по маске и генерировать эту маску?
Отправлено: Sancho_s_rancho от Сентябрь 23, 2010, 08:59
Можно генерировать битовую карту, причем к каждому биту пусть будет указатель на фигуру. Проверяется точка, куда происходит перемещение или бросание объекта и в зависимости от состояния бита область делается ч/б или остается цветной.
ПИ СИ первое, что пришло в мою светлую голову.


Название: Re: Как объединять две картинки по маске и генерировать эту маску?
Отправлено: Caduceus от Сентябрь 23, 2010, 09:03
Что попиксельно бежать и проверять можно сюда бросать или нет и менять цвет? Тормозно будет


Название: Re: Как объединять две картинки по маске и генерировать эту маску?
Отправлено: Sancho_s_rancho от Сентябрь 23, 2010, 09:25
Что попиксельно бежать и проверять можно сюда бросать или нет и менять цвет? Тормозно будет
Будет очень хорошо. Проверено электроникой Sancho_s_rancho.
Без шуток. Современные машины -- это мегамощая числодробилка и только современные программисты могут написать настолько кривой код, что она захлебнется.


Название: Re: Как объединять две картинки по маске и генерировать эту маску?
Отправлено: Igors от Сентябрь 23, 2010, 10:16
Зарядить 2 QPixmap (цветную и черно-белую). Когда мышь наезжает, определить область и собрать из 2 QPixmap третью, вывести ее на экран.

С точки зрения "дызайна" - не очень удачно. Цветная и черно-белая могут быть (в каких-то местах) одинаковы. Смена картинки на черно-белую не очень интуитивна. Может лучше "fade" - или вообще ограничиться формой курсора


Название: Re: Как объединять две картинки по маске и генерировать эту маску?
Отправлено: Caduceus от Сентябрь 23, 2010, 10:19
Что есть fade?
Не, картинка цветная. Это не просто картинка - она мной же и сгенерирована, там вообще нету серых тонов.


Название: Re: Как объединять две картинки по маске и генерировать эту маску?
Отправлено: Igors от Сентябрь 23, 2010, 10:48
Что есть fade?
Выбираем какой-то цвет, напр благородный серый (192, 192, 192) и смешиваем этот фон с картинкой. Часто выглядит приятнее


Название: Re: Как объединять две картинки по маске и генерировать эту маску?
Отправлено: Caduceus от Сентябрь 23, 2010, 10:55
Ну хорошо, тогда вопрос -  как замешать цветную картнку по маске с "благородным серым" и как эту маску сгенерировать, если я знаю регионы, куда можно бросать.

Попиксельная пробежка все же мне кажется кривым решением


Название: Re: Как объединять две картинки по маске и генерировать эту маску?
Отправлено: ufna от Сентябрь 23, 2010, 11:55
А рисовать поверх? или использовать технику "наложений"? QPainter - очень мощная система, гляньте QtDemo в "Arthur" отделении