Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  172

•  TDictionary Custom Sort  3 344

•  Fast Watermark Sources  3 095

•  3D Designer  4 852

•  Sik Screen Capture  3 350

•  Patch Maker  3 556

•  Айболит (remote control)  3 665

•  ListBox Drag & Drop  3 018

•  Доска для игры Реверси  81 742

•  Графические эффекты  3 948

•  Рисование по маске  3 253

•  Перетаскивание изображений  2 633

•  Canvas Drawing  2 761

•  Рисование Луны  2 586

•  Поворот изображения  2 195

•  Рисование стержней  2 171

•  Paint on Shape  1 569

•  Генератор кроссвордов  2 240

•  Головоломка Paletto  1 770

•  Теорема Монжа об окружностях  2 237

•  Пазл Numbrix  1 685

•  Заборы и коммивояжеры  2 059

•  Игра HIP  1 282

•  Игра Go (Го)  1 230

•  Симулятор лифта  1 477

•  Программа укладки плитки  1 219

•  Генератор лабиринта  1 548

•  Проверка числового ввода  1 368

•  HEX View  1 497

•  Физический маятник  1 359

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Установка уровня прозрачности изображения



Автор: Fenik

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Установка уровня прозрачности изображения

Зависимости: Windows, Graphics, Math
Автор:       Fenik, chook_nu@uraltc.ru, Новоуральск
Copyright:   Автор Федоровских Николай
Дата:        3 сентября 2002 г.
***************************************************** }

procedure BlendBitmap(Src, Dest: TBitmap; Amount: Byte; Left, Top:
  Integer; BackColor: TColor; Transparent: Boolean);
  function CandC(C1, C2: TRGBTriple): Boolean;
  begin {Сравнение двух цветов}
    Result := (C1.rgbtBlue = C2.rgbtBlue) and
      (C1.rgbtGreen = C2.rgbtGreen) and
      (C1.rgbtRed = C2.rgbtRed);
  end;
  {Процедура установления уровня прозрачности
   изображения Dest, расположенного над изображением Src.
   Amount - уровень прозрачности в промежутке [0..255].
   Left, Top - левый верхний угол Dest.
   BackColor - цвет, который не нужно изменять,
   если Transparent = True.}
var
  x, y, y1, y2, x1, x2: Integer;
  ps, pd: pRGBTriple;
  rgb: TRGBTriple;
  A1, A2: Double;
begin
  Src.PixelFormat := pf24Bit;
  Dest.PixelFormat := pf24Bit;
  A1 := Amount / 255;
  A2 := 1 - A1;
  {Изменяется только та часть изображения,
   которая расположена над исходным}
  y1 := Max(0, Top);
  x1 := Max(0, Left);
  x2 := Min(Src.Width - 1, Left + Dest.Width - 1);
  y2 := Min(Src.Height - 1, Top + Dest.Height - 1);
  rgb.rgbtRed := Lo(BackColor);
  rgb.rgbtGreen := Lo(BackColor shr 8);
  rgb.rgbtBlue := Lo((BackColor shr 8) shr 8);
  for y := y1 to y2 do
  begin
    ps := Src.ScanLine[y];
    pd := Dest.ScanLine[y - Top];
    Inc(ps, x1);
    if Left < 0 then
      Inc(pd, Abs(Left));
    for x := x1 to x2 do
    begin
      if not (Transparent and CandC(pd^, rgb)) then
        with pd^ do
        begin
          rgbtBlue := Round(A1 * ps^.rgbtBlue + A2 * rgbtBlue);
          rgbtGreen := Round(A1 * ps^.rgbtGreen + A2 * rgbtGreen);
          rgbtRed := Round(A1 * ps^.rgbtRed + A2 * rgbtRed);
        end;
      Inc(pd);
      Inc(ps);
    end;
  end;
end;

Пример использования:

var
  Bmp: TBitmap;
begin
  if not FileExists('C:\Blend.bmp') then
    Exit;
  Bmp := TBitmap.Create;
  try
    Bmp.LoadFromFile('C:\Blend.bmp');
    BlendBitmap(FBitmap, Bmp, 127, 10, 10, clWhite, True);
    Bmp.TransparentColor := clWhite;
    Bmp.Transparent := True;
    FBitmap.Canvas.Draw(10, 10, Bmp);
  finally
    Bmp.Free;
  end;
  Paint;
end;




Похожие по теме исходники

Изменение цвета изображения

TGIFImage (GIF изображения)

Поворот изображения




Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте