Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2012, 01:42   #1
nik2009nik
 
Регистрация: 11.02.2012
Сообщений: 6
По умолчанию Обрезать bmp и установить прозрачность

Привет.
Загружаю точечный рисунок в память программы с помощью LoadImage (работаю на чистом WinAPI)
При несовпадении размеров исходного и целевого прямоугольников:
Функция BitBlt обрезает рисунок
Функция TransparentBlt растягивает рисунок

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

Оказалось, что это не так просто: при совпадении исходного и целевого устройств ничего не происходит, а при добавлении еще одного (промежуточного) совместимого устройства - тоже ничего не происходит.

Необходимо, чтобы элементы дизайна хранились в одном файле BMP, а не каждый в отдельном.
Подскажите, пожалуйста, как мне осуществить и обрезку рисунка, и установление прозрачного цвета одновременно?
Это возможно с помощью стандартного GDI?
Желательно подробно, так как хочу вникнуть в суть.
nik2009nik вне форума Ответить с цитированием
Старый 18.02.2012, 02:26   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
читаем внимательно названия параметров и думаем как можно совместить все в один вызов.
TransparentBlt способна делать тоже самое что и BitBlt.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 18.02.2012, 19:05   #3
nik2009nik
 
Регистрация: 11.02.2012
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
читаем внимательно названия параметров и думаем как можно совместить все в один вызов.
TransparentBlt способна делать тоже самое что и BitBlt.
Эта строчка говорит, что функция только растягивает изображение:
If the source and destination rectangles are not the same size, the source bitmap is stretched to match the destination rectangle.
В переводе:
Если источниковый и принимающие прямоугольники имеют разные размеры, исходный точечный рисунок растягивается так, чтобы соответствовать принимающему прямоугольнику.
nik2009nik вне форума Ответить с цитированием
Старый 18.02.2012, 20:56   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а про параметры xoriginSrc и yoriginSrc не читали?
их смысл тот же что и в BitBlt параметры nXSrc и nYSrc.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как установить прозрачность в TImage или TBitMap X@OC Компоненты Delphi 6 23.11.2011 23:18
обрезать фото SkrudjMakdak JavaScript, Ajax 4 09.06.2011 16:04
Как установить возможность выбора только bmp-файлов в Picture Editor? Наки Компоненты Delphi 2 14.04.2011 22:03
Загрузка BMP в Simple Graph и сохранение в BMP формат artemavd Общие вопросы Delphi 10 02.10.2010 14:19
Обрезать фото Cpluser Общие вопросы .NET 5 15.04.2010 12:58