Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 05.08.2010, 19:46
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

еще один из способов обработки TBitmap. заменяет околобелый цвет на clBtnFace:
Код:
procedure Transparent(bmp: TBitmap);
var
  InfoHeaderSize: DWORD;
  ImageSize: DWORD;
  BitmapInfo: PBitmapInfo;
  Bits: array of Byte;
  i: Integer;
  dc: HDC;
  r, g, b: Integer;
  r0, g0, b0: Integer;
  delta: Integer;
begin
  delta:=4;
  r0:=GetRValue(ColorToRGB(clBtnFace));
  g0:=GetGValue(ColorToRGB(clBtnFace));
  b0:=GetBValue(ColorToRGB(clBtnFace));
  GetDIBSizes(bmp.Handle, InfoHeaderSize, ImageSize);
  GetMem(BitmapInfo, InfoHeaderSize);
  GetMem(Bits, ImageSize);
  dc:=CreateCompatibleDC(GetDC(0));
  try
    GetDIB(bmp.Handle, 0, BitmapInfo^, Bits[0]);
    for i:=0 to (ImageSize div 3)-1 do
    begin
      r:=Bits[(i*3)+2];
      g:=Bits[(i*3)+1];
      b:=Bits[(i*3)+0];
      if (Abs(r-255)<=delta) and (Abs(g-255)<=delta) and (Abs(b-255)<=delta) then
      begin
        Bits[(i*3)+0]:=r0;
        Bits[(i*3)+1]:=g0;
        Bits[(i*3)+2]:=b0;
      end;
    end;
    SetDIBits(dc, bmp.Handle, 0, BitmapInfo^.bmiHeader.biHeight, Bits, BitmapInfo^, DIB_RGB_COLORS);
  finally
    DeleteDC(dc);
    ReleaseDC(0, dc);
    FreeMem(BitmapInfo);
    FreeMem(Bits);
  end;
end;
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:17.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter