Эффект Блоки

Эффект Блоки

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Эффект 'Блоки'
Зависимости: Windows, Classes, Graphics
Автор: Fenik, <a href="mailto:chook_nu@uraltc.ru">chook_nu@uraltc.ru</a>, Новоуральск
Copyright: Собственное написание (Николай федоровских)
Дата: 1 июня 2002 г.
***************************************************** }

procedure Blocks(Bitmap: TBitmap; Hor, Ver, MaxOffset:
 Integer; BackColor: TColor);
{вырезаем прямоугольники со сторонами Hor Ver
и копируем их в радиусе MaxOffset}

 function RandomInRadius(Num, Radius: Integer): Integer;
 begin
  if Random(2) = 0 then
  Result := Num + Random(Radius)
  else
  Result := Num - Random(Radius);
 end;
var
 x, y, xd, yd: Integer;
 Bmp: TBitmap;
begin
 Bmp := TBitmap.Create;
 try
  Bmp.Assign(Bitmap);
  Bitmap.Canvas.Brush.Color := BackColor;
  Bitmap.Canvas.FillRect(Rect(0, 0, Bitmap.Width, Bitmap.Height));
  xd := (Bitmap.Width - 1) div Hor;
  yd := (Bitmap.Height - 1) div Ver;
  Randomize;
  for x := 0 to xd do
  for y := 0 to yd do
  BitBlt(Bitmap.Canvas.Handle,
  RandomInRadius(Hor * x, MaxOffset),
  RandomInRadius(Ver * y, MaxOffset),
  Hor, Ver, Bmp.Canvas.Handle, Hor * x, Ver * y, SRCCOPY);
 finally
  Bmp.Free;
 end;
end;
Пример использования:
Blocks(FBitmap, FBitmap.Width div 10, FBitmap.Height div 10, 4, clWhite);

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...