Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.191.218.130] |
|
Сообщ.
#1
,
|
|
|
Как мне объединить два битмапа (HBITMAP + HBITMAP)
|
Сообщ.
#2
,
|
|
|
Объеденить - понятие размытоое. Что именно нужно с ним сделать? Наложить поставить рядом, раком и т.д.? :D
|
Сообщ.
#3
,
|
|
|
Цитата Song, 01.06.02, 10:03:55 Объеденить - понятие размытоое. Что именно нужно с ним сделать? Наложить поставить рядом, раком и т.д.? Извините, признаю свою ошибку в вопросе. :-[ Вообщето требуется наложить один на другой. Но мне понравился вариант "поставить раком", по возможности объясните как это сделать |
Сообщ.
#4
,
|
|
|
Опять же, вопрос поставлен не совсем корректно , поскольку даже наложить один bmp на другой можно, по крайней мере двумя способами.
Первый способ: Определить у bmp, который накладываем (источник), прозрачный цвет (если таковой имеем) и попиксельно (делаю так для простоты, не для скорости) перемещаем canvas источника на canvas получателя. Доступ к отдельным пикселям = Image.Canvas.Pixels[x,y]:TColor; Таким образом, код будет выглядеть примерно так (Image1 - тот, на кого накладывают , Image2 - тот КОГО накладываем): Допустим, на втором битмапе прозрачный цвет (цвет фона) = clFuchsia. Допустим также, что второй битмап, по размерам меньше первого. for x := 0 to Image2.Canvas.Width - 1 do for y := 0 to Image2.Canvas.Height - 1 do //проверяем условие прозрачности if Image2.Canvas.Pixels[x,y] <> clFuchsia then Image1.Canvas.Pixels[x,y] := Image2.Canvas.Pixels[x,y]; Так мы получим Image1, с намазанным на него Image2 Да, позиция намазывания, как видно из кода вверху = [0,0] Чтобы налеплять в другом месте, нужно добавлять к координатам Image1 нек-е константы. Недостаток этого кода, в его медлительности. (Но при небольших размерах рисунков и достаточно сильной тачке, жить можно Это все, что касается первого способа... По моему есть и второй ;). Его суть заключается в том, что по какой-то формуле, на основании цветов двух накладываемых др. на др-а пикселей, определяется цвет - результат. В конце концов, получается т.н. прозрачное наложение, т.е получится что в месте наложения, видны оба рисунка. За неимением алгоритма определения цвета результата, исходники предложить не могу ;D |
Сообщ.
#5
,
|
|
|
Спасибо и за то, меня действительно интересовал первый способ.
но у меня возник вопрос как мне нарисовать полупрозрачный курсор? То есть, чтоб bitmap курсора мыши содержал цвета с Alpha Blending? |
Сообщ.
#6
,
|
|
|
Привет всем!!!!
Я вот вернулся и нашёл свою тему. Так вот, мне так и неотвеетили как нарисовать полупрозрачный фон, програмно. (В run-time). По возможности, хотелось бы увидеть хоть какие-нибудь предложения Заранее спасибо |