На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Bitmap
    Как мне объединить два битмапа (HBITMAP + HBITMAP)
      Объеденить - понятие размытоое. Что именно нужно с ним сделать? Наложить поставить рядом, раком и т.д.?  :D
        Цитата Song, 01.06.02, 10:03:55
        Объеденить - понятие размытоое. Что именно нужно с ним сделать? Наложить поставить рядом, раком и т.д.?  :D


        Извините, признаю свою ошибку в вопросе. :-[  Вообщето требуется наложить один на другой.   Но мне понравился вариант "поставить раком", по возможности объясните как это сделать :D :)
          Опять же, вопрос поставлен не совсем корректно ;), поскольку даже наложить один 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
            Спасибо и за то, меня действительно интересовал первый способ.

            но у меня возник вопрос как мне нарисовать полупрозрачный курсор? То есть, чтоб bitmap курсора мыши содержал цвета с Alpha Blending?
              Привет всем!!!!

              Я вот вернулся и нашёл свою тему.  Так вот, мне так и неотвеетили как нарисовать полупрозрачный фон, програмно. (В run-time).

              По возможности, хотелось бы увидеть хоть какие-нибудь предложения

              Заранее спасибо
              1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0202 ]   [ 15 queries used ]   [ Generated: 17.05.24, 06:37 GMT ]