Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Плазменная заливка формы

Delphi , Программа и Интерфейс , Интерфейс

Плазменная заливка формы

Если вам надоели обычные монотонные формы, то эта статья - спасенье для вас!!! Всё, что вам нужно сделать для того, чтобы ваше окно выглядело так же эффектно, как и показанное на рисунке - это только написать несколько строк кода:


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics,
  Controls, Forms, Dialogs;

type
  TForm1 = class(TForm)
    procedure FormPaint(Sender: TObject);
  private
    { Private declarations }
    plasma: array [0..768, 0..768] of byte;
    procedure makeplasma;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormPaint(Sender: TObject);
var
  x, y: integer;
begin
  makeplasma;
  for x := 0 to 255 do
  begin
    for y := 0 to 255 do
    begin
      Form1.Canvas.Pixels[x, y] := rgb(plasma[x, y],
      plasma[x + 256, y + 256], plasma[x + 512, y + 512]);
    end;
    Form1.update;
  end;
end;

procedure TForm1.makeplasma;

  procedure halfway(x1,y1,x2,y2: integer);

    procedure adjust(xa,ya,x,y,xb,yb: integer);
    var
      d: integer;
      v: double;
    begin
      if plasma[x,y]<>0 then
        exit;
      d:=Abs(xa-xb)+Abs(ya-yb);
      v:=(plasma[xa,ya]+plasma[xb,yb])/2+(random-0.5)*d*2;
      if v<1 then
        v:=1;
      if v>=193 then
        v:=192;
      plasma[x,y]:=Trunc(v);
    end;

  var
    x, y: integer;
    v: double;
  begin
    if (x2-x1<2) and (y2-y1<2) then
      exit;
    x:=(x1+x2) div 2;
    y:=(y1+y2) div 2;
    adjust(x1,y1,x,y1,x2,y1);
    adjust(x2,y1,x2,y,x2,y2);
    adjust(x1,y2,x,y2,x2,y2);
    adjust(x1,y1,x1,y,x1,y2);
    if plasma[x,y]=0 then
    begin
      v:=(plasma[x1,y1]+plasma[x2,y1]+plasma[x2,y2]+plasma[x1,y2])/4;
      plasma[x,y]:=Trunc(v);
    end;
    halfway(x1,y1,x,y);
    halfway(x,y1,x2,y);
    halfway(x,y,x2,y2);
    halfway(x1,y,x,y2);
  end;

var
  x, y: integer ;
begin
  randomize;
  plasma[0,768]:=random(192);
  plasma[768,768]:=random(192);
  plasma[768,0]:=random(192);
  plasma[0,0]:=random(192);
  halfway(0,0,768,768);
end;

end.

Статья Плазменная заливка формы раздела Программа и Интерфейс Интерфейс может быть полезна для разработчиков на Delphi и FreePascal.


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


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




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



:: Главная :: Интерфейс ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100
28.03.2024 18:02:28/0.034483909606934/0