Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] GDI+ рисование на статике-перерисовка "заново"

Ответить
Настройки темы
C/C++ - [решено] GDI+ рисование на статике-перерисовка "заново"

Аватара для crashtuak

Старожил


Сообщения: 467
Благодарности: 25


Конфигурация

Профиль | Отправить PM | Цитировать


Как можно нарисовав на статике одно изображение с прозрачностью, зарисовать его другим, тоже с прозрачностью, тоесть удалить первое изображение?
(если рисовать сразу поверх первого изображения, то прозрачные части первого совмещаются с прозрачными второго)
Я думаю, может сначала зарисовать белым фоном, но то как то кустарно выйдет...

-------
Мне надо не так много "Полезных сообщений", чтоб сровнять их количество с моими постами :).


Отправлено: 10:43, 25-01-2010

 

Аватара для crashtuak

Старожил


Сообщения: 467
Благодарности: 25

Профиль | Отправить PM | Цитировать


Только вот при InvalidateRect появляется мерцание...

-------
Мне надо не так много "Полезных сообщений", чтоб сровнять их количество с моими постами :).


Отправлено: 14:29, 26-01-2010 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Admiral, по поводу масок прозрачности, если принципиальна скорость выполнения и много работы с перемножением картинок, а также не жалко ресурсов, то можно использовать d3d (совместно с GDI+ можно через поверхности IDirect3DSurface7, а можно и без GDI+). Я делал проигрыватель видеороликов "картинка в картинке", а-ля назойливая реклама в телеке. 1280x1024@30fps, GDI+ полностью загружает одно ядро, а d3d (перебрал все виды альфаблендинга) процентов на 5-10.
Если требуется небольшая картинка и скорость смены кадров 1-2 fps, то врукопашную перемножить 2 массива сгодится.
С d3d алгоритм такой: на скрытую поверхность копируем часть экана, делаем что надо, копируем обратно. Окно, к которому привязан объект d3d - не показываем. В более поздних directX это сделано в Direct2D
Цитата crashtuak:
Только вот при InvalidateRect появляется мерцание... »
с мерцанием борются WS_EX_COMPOSITED - двойная буферизация
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:17, 26-01-2010 | #12


Аватара для crashtuak

Старожил


Сообщения: 467
Благодарности: 25

Профиль | Отправить PM | Цитировать


pva, c WS_EX_COMPOSITED вообще ничего не рисуется на форме... но то уже другая история. Все мои запросы удовлетворила InvalidateRect(перерисовываю только нужную область, а не весь экран, потому и мерцания невидно).

-------
Мне надо не так много "Полезных сообщений", чтоб сровнять их количество с моими постами :).


Отправлено: 20:47, 26-01-2010 | #13

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


А, вот ещё вспомнил, у борланда своё понимание корректности работы с WinAPI и скорости выполнения кода. В билдере
Код: Выделить весь код
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    DoubleBuffered = true;
}
если с GDI+ не сработает, то я сдаюсь

Отправлено: 23:49, 26-01-2010 | #14



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] GDI+ рисование на статике-перерисовка "заново"

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - [решено] Как удалить папку "Моя музыка","Мои Картинки", "Мое видео"? verdix Microsoft Windows 2000/XP 3 03-10-2009 23:46
Debian/Ubuntu - [решено] Пропали кнопки "свернуть","закрыть","во весь екран" в папках Alex.sys Общий по Linux 5 02-04-2009 11:13
Приоритет в диспетчере: "реального времени", "средний", "выше среднего" alhimik PC Хочу все знать 3 28-11-2006 05:29
Запретить/удалить пункт "Programs" ("Программы") из меню кнопки "Start" ("Пуск") submaster Microsoft Windows NT/2000/2003 5 13-09-2006 12:29
Можно ли ставить "GDI+" на русский win'98 ? Fire Dragon Microsoft Windows 95/98/Me (архив) 0 18-03-2005 18:58




 
Переход