Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Эффект Блоки

Delphi , Графика и Игры , Bitmap



Автор: Fenik
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Эффект 'Блоки'

Зависимости: Windows, Classes, Graphics
Автор:       Fenik, chook_nu@uraltc.ru, Новоуральск
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); 

Программный код на Delphi, реализующий эффект "Блоки", который представляет собой простую анимацию, где прямоугольные блоки случайно перемещаются по канвасу.

Вот подробное описание того, что код делает:

  1. Процедура Blocks принимает пять параметров:

    • Bitmap: объект TBitmap, представляющий собой канвас для рисования.
    • Hor и Ver: целые числа, представляющие ширину и высоту каждого блока соответственно.
    • MaxOffset: целое число, устанавливающее максимальную границу для перемещения блоков от их оригинальной позиции.
    • BackColor: значение TColor, представляющее цвет заливки канваса перед рисованием блоков.
  2. Внутри процедуры создается временный битмап (Bmp) и присваивается входному Bitmap. Затем канвас заливается указанным BackColor.

  3. Код рассчитывает количество блоков, которые могут поместиться горизонтально и вертикально на канвасе на основе параметров Hor и Ver.

  4. Цикл используется для перебора каждого блока, генерируя случайную позицию для него в радиусе, определенном параметром MaxOffset. Это обеспечивает, чтобы блоки не перемещались слишком далеко от их оригинальной позиции.

  5. Функция BitBlt используется для рисования блока на канвасе. Она принимает несколько параметров:

    • Указатель на handle destination canvas (Bitmap.Canvas.Handle)
    • Координаты x и y верхнего левого угла источника прямоугольника
    • Ширина и высота источника прямоугольника (которые равны Hor и Ver, соответственно)
    • Указатель на handle source canvas (Bmp.Canvas.Handle)
    • Координаты x и y верхнего левого угла целевого прямоугольника (которые равны x * Hor и y * Ver, соответственно)
  6. Наконец, код освобождает временный битмап (Bmp) для освобождения памяти.

Пример использования в конце показывает, как вызывать процедуру Blocks с предопределенным канвасом (FBitmap) и параметрами для размера блока, границы смещения и цвета фона.

Эффект Блоки - процедура на Delphi для создания изображения из прямоугольников с случайными координатами и размерами.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Bitmap ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 13:39:52/0.0031850337982178/0