//------------------------------------------------------------------------- // Plasma routine, using the surface of a TImage. // made in delphi 4.0 // // Written by Richard Funke <Richard.Funke@interkodex.no> (c) 1999 // www.interkodex.com // have fun! // // Code from Delphi Snippets : http://sortland.net/Delphi/Snippets.htm //-------------------------------------------------------------------------unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Image1: TImage; procedure PlasmaLoop(Sender: TObject; var Done: Boolean); procedure FormCreate(Sender: TObject); procedure FormResize(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} var x1, X2, x3: Byte; sctable: array[0..255] of Byte; procedure TForm1.PlasmaLoop(Sender: TObject; var Done: Boolean); type dings = array[0..1] of Integer; var xx, yy: Integer; sline: ^dings; d1, d2, d3: Byte; begin for yy := 0 to image1.Height - 1 do begin sline := image1.Picture.BitMap.scanline[yy]; for xx := 0 to image1.Width - 1 do begin d1 := xx shr 1 + x1; d2 := yy shr 2 + X2; d3 := xx shr 1 + yy shr 3 + x3; sline[xx] := rgb(sctable[d1], sctable[d2], sctable[d3]); end; end; Inc(x1); Inc(X2, 2); Inc(x3, 3); Done := False; image1.Refresh; end; procedure TForm1.FormCreate(Sender: TObject); var i: Integer; begin for i := 0 to 255 do sctable[i] := Round(sin(i / 128 * 3.14) * 127 + 128); Application.OnIdle := plasmaloop; image1.Picture.BitMap.PixelFormat := pf32bit; end; procedure TForm1.FormResize(Sender: TObject); begin image1.Picture.BitMap.Width := image1.Width; image1.Picture.BitMap.Height := image1.Height; end; end.