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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2012, 23:16   #1
SkOle
Пользователь
 
Регистрация: 18.01.2009
Сообщений: 29
Вопрос Вопрос по Bitmap с Alpha-каналом

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

Код, который все это дело обрабатывает:
Код:
h := LoadLibrary('c:\Windows\SYSTEM32\explorer.exe');
  Bitmap := TBitmap.Create;
  Bitmap.PixelFormat := pf32bit;
  try
    if h <> 0 then
    begin
      Bitmap.LoadFromResourceName(h, '#7016');
      Bitmap.Transparent := True;
      Bitmap.TransparentColor := Bitmap.Canvas.Pixels[0,0];
      Bitmap.TransparentMode := tmAuto;
      Image1.Canvas.Draw(0, 0, Bitmap);
    end;
  finally
    Bitmap.Free;
    FreeLibrary(h);
  end;
ну и соотвественно:
Код:
var
  h: THandle;
  Bitmap: TBitmap;
помогите, плз, уже горю с проектом
SkOle вне форума Ответить с цитированием
Старый 11.01.2012, 13:45   #2
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

у меня такого ресурса в explorer'e не оказалось
и путь c:\windows\explorer.exe
ZuBy вне форума Ответить с цитированием
Старый 11.01.2012, 15:21   #3
x128
Форумчанин
 
Регистрация: 03.02.2010
Сообщений: 178
По умолчанию

Код:
procedure AlphaDraw(dst: THandle; x,y: integer; img: TBitmap);
var
  bf: TBlendFunction;
begin
  bf.BlendOp:=AC_SRC_OVER;
  bf.BlendFlags:=0;
  bf.SourceConstantAlpha:=255;
  bf.AlphaFormat:=AC_SRC_ALPHA;
  AlphaBlend(dst, x,y,img.Width,img.Height, img.Canvas.Handle, 0,0,img.Width,img.Height, bf);
end;
------------
  h := LoadLibrary('c:\Windows\SYSTEM32\explorer.exe');
  Bitmap := TBitmap.Create;
  try
    if h <> 0 then
    begin
      Bitmap.LoadFromResourceName(h, '#7016');
      AlphaDraw(Image1.Canvas.Handle, 0, 0, Bitmap);
    end;
  finally
    Bitmap.Free;
    FreeLibrary(h);
  end;
x128 вне форума Ответить с цитированием
Старый 11.01.2012, 19:08   #4
SkOle
Пользователь
 
Регистрация: 18.01.2009
Сообщений: 29
По умолчанию

ZuBy, это для Windows 7

x128, отлично просто!!! СПАСИБО БОЛЬШОЕ!!! рейтинг повысил
SkOle вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
из-за чего появляется полоса (на скрине) при вставке BitMap в TImage? - Проблема с Bitmap Grey@2009 Мультимедиа в Delphi 2 02.01.2010 20:23
Вопрос по Alpha Skins dani92 Компоненты Delphi 4 13.12.2009 09:33
Вопрос про копирование BitMap? juan666777 Общие вопросы Delphi 2 03.05.2009 01:04
Скин формы с Альфа каналом NotProCoder Мультимедиа в Delphi 4 21.04.2009 13:46
Отрисовка PNG с альфа-каналом на десктопе Whisper Помощь студентам 2 02.01.2008 19:24