Просмотр кода
Идентификатор: 7a859e86 Описание: Код загружен: 4 октября 2013, 12:56 (Ixer)
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, ExtCtrls, jpeg; type TForm1 = class(TForm) Image1: TImage; pb1: TProgressBar; Timer1: TTimer; procedure Timer1Timer(Sender: TObject); procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormResize(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Image1DblClick(Sender: TObject); private { Private declarations } mjpeg:TJPEGImage; bit:TBitmap; c100:Integer; c150:integer; c300:integer; cim:Cardinal; cmax:cardinal; public { Public declarations } FUNCTION lim255(value:Integer):Byte; procedure rndPosX; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.rndPosX; begin c100:= random(100)+10; c150:= random(150)+20; c300:= random(300)+30; end; procedure TForm1.Timer1Timer(Sender: TObject); begin if (cim < cmax) or (cmax = 0) then begin Image1DblClick(nil); end else close; end; procedure TForm1.FormCreate(Sender: TObject); begin mjpeg:= TJPEGImage.Create; bit:=TBitmap.Create; bit.Height:=Image1.Height; bit.Width:=Image1.Width; cim:=0; if StrToIntDef(ParamStr(1),5)>0 then begin cmax:=StrToIntDef(ParamStr(1),0); Timer1.Interval:=100; end; end; procedure TForm1.FormDestroy(Sender: TObject); begin mjpeg.Free; bit.Free; end; procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = VK_ESCAPE then Close; end; procedure TForm1.FormResize(Sender: TObject); begin bit.Height:=Image1.Height; bit.Width:=Image1.Width; end; procedure TForm1.Image1DblClick(Sender: TObject); var xr,yr,xg,yg,xb,yb,i,j,wx,wy,wv,rv,gv,bv:integer; cr,cb,cg,cw:byte; kr,kg,kb,kw:real; begin Timer1.Enabled:=False; inc(cim); Randomize; rndPosX; xr:=random(Image1.Width-c300)+c150; yr:=random(Image1.Height-c300)+c150; xg:=random(Image1.Width-c300)+c150; yg:=random(Image1.Height-c300)+c150; xb:=random(Image1.Width-c300)+c150; yb:=random(Image1.Height-c300)+c150; wx:=random(Image1.Width-c300)+c150; wy:=random(Image1.Height-c300)+c150; kr:=random(c100)/10-5; kg:=random(c100)/10-5; kb:=random(c100)/10-5; kw:=random(c100)/10-5; wv:=Random(255); rv:=Random(255); gv:=Random(255); bv:=Random(255); for i:=0 to Image1.Width do begin for j:=0 to Image1.Height do begin cw:=round(abs(wv*(1-abs((wy+j)*kw+(wx-i))/sqrt(1+kw*kw)/Image1.Width))); cr:=round(abs(rv*(1-abs((yr+j)*kr+(xr-i))/sqrt(1+kr*kr)/Image1.Width))); cg:=round(abs(gv*(1-abs((yg+j)*kg+(xg-i))/sqrt(1+kg*kg)/Image1.Width))); cb:=round(abs(bv*(1-abs((yb-j)*kb+(xb-i))/sqrt(1+kb*kb)/Image1.Width))); bit.Canvas.Pixels[i,j]:=RGB(lim255(cr+cw),lim255(cg+cw),lim255(cb+cw)); end; end; Image1.Picture.Bitmap.Assign(bit); mjpeg.Assign(bit); mjpeg.Compress; mjpeg.SaveToFile(ExtractFilePath(ParamStr(0))+'\im'+inttostr(Random($ffffff))+'.jpg'); Timer1.Enabled:=True; end; function TForm1.lim255(value: Integer): Byte; begin lim255:=abs(value-255); end; end.