Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Полупрозрачный bitmap как в ACDSee

13K
27 мая 2006 года
Delphiprogramer
31 / / 06.04.2006
или в некоторых других программах в галереях картинок (например, Picasa). Сколько ни пытался так сделать - ничего не получалось. Хотел сделать, чтобы картинка была прозрачная и в оттенках белого.
339
29 мая 2006 года
verybadbug
619 / / 12.09.2005
Цитата:
Originally posted by Delphiprogramer
или в некоторых других программах в галереях картинок (например, Picasa). Сколько ни пытался так сделать - ничего не получалось. Хотел сделать, чтобы картинка была прозрачная и в оттенках белого.



эффекта полупрозрачности можно добиться сведением bitmap'ов....

13K
29 мая 2006 года
Delphiprogramer
31 / / 06.04.2006
Цитата:
Originally posted by verybadbug
эффекта полупрозрачности можно добиться сведением bitmap'ов....


То есть? Как это делается, на конкретном примере?

339
30 мая 2006 года
verybadbug
619 / / 12.09.2005
Цитата:
Originally posted by Delphiprogramer
То есть? Как это делается, на конкретном примере?



Код:
procedure MergeBitmap(Source: TBitmap; X, Y: Integer; Alpha: Real; var Dest: TBitmap);
var
  SourceSL: PByteArray;
  DestSL: PByteArray;
  I, J, Imax, Jmax: Integer;
begin
  //обязательное условие
  //Source.PixelFormat = pf24bit
  //Dest.PixelFormat = pf24bit
  if (Source.PixelFormat <> pf24bit) or (Dest.PixelFormat <> pf24bit) then Exit;
  //определяем границы сведения
  Jmax := Min(Source.Height, Dest.Height - Y);
  Imax := Min(Source.Width, Dest.Width - X);
  //и собственно сведение
  J := 0;
  while J < Jmax do begin
    SourceSL := Source.ScanLine[J];
    DestSL := Dest.ScanLine[J + Y];
    I := 0;
    while I < Imax do begin
      DestSL[(I + X) * 3 + 0] := Round(SourceSL[I * 3 + 0] * Alpha + DestSL[(I + X) * 3 + 0] * (1 - Alpha));
      DestSL[(I + X) * 3 + 1] := Round(SourceSL[I * 3 + 1] * Alpha + DestSL[(I + X) * 3 + 1] * (1 - Alpha));
      DestSL[(I + X) * 3 + 2] := Round(SourceSL[I * 3 + 2] * Alpha + DestSL[(I + X) * 3 + 2] * (1 - Alpha));
      Inc(I);
    end;
    Inc(J);
  end;
end;


Source рисуется на Dest со смещением (X, Y) и прозрачностью Alpha
X, Y - координаты в пикселях
Alpha - коэффициент от 0 до 1

и ещё... для работы в uses необходимо прописать Math...
13K
30 мая 2006 года
Delphiprogramer
31 / / 06.04.2006
Огромное Вам спасибо! Сегодня же проверю на Delphi 7.
Кстати, какая, на Ваш взгляд, версия Delphi наиболее удачная?
339
30 мая 2006 года
verybadbug
619 / / 12.09.2005
Цитата:
Originally posted by Delphiprogramer
Огромное Вам спасибо! Сегодня же проверю на Delphi 7.
Кстати, какая, на Ваш взгляд, версия Delphi наиболее удачная?



главное, на мой взгляд, чтоб руки из нужного места росли.. ))) сам в D2005 пишу.. иногда в D7.. и уж совсем редко в D3...

13K
30 мая 2006 года
Delphiprogramer
31 / / 06.04.2006
Цитата:
Originally posted by verybadbug
главное, на мой взгляд, чтоб руки из нужного места росли.. ))) сам в D2005 пишу.. иногда в D7.. и уж совсем редко в D3...


А где Вы покупали Delphi 2005 и на чём (CD или DVD)? А то вот я купил на CD в архиве 7-zip Delphi 2005, а она неправильная оказалась: так и не смог ни одного компонента ActiveX зарегистрировать. Хотелось бы на DVD, только вот не знаю, где...

339
31 мая 2006 года
verybadbug
619 / / 12.09.2005
Цитата:
Originally posted by Delphiprogramer
А где Вы покупали



а я не покупал.... я вообще редко чё покупаю... ))))

13K
31 мая 2006 года
Delphiprogramer
31 / / 06.04.2006
Цитата:
Originally posted by verybadbug
а я не покупал.... я вообще редко чё покупаю... ))))


Неужели скачивали 1,4 ГБ из eMule'я?!
Кстати, я собираюсь провернуть это дело: сказать образ DVD с Delphi 2005 весом 1,4 ГБ. Для модема это тяжеловато, но, так как в ближайшие полгода качать всё равно нечего...

242
01 июня 2006 года
Оlga
2.2K / / 04.02.2006
Уважаемые! у меня к вам огромная просьба:
обсуждайте подобные вопросы через личные сообщения.
тема закрыта
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог