Форум: "Основная";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];
ВнизОбщеобразовательный вопрос: как делают форму Найти похожие ветки
← →
Alx2 (2002-03-29 16:16) [4]Тоже стало интересно. вот, набросал на скорую руку. Ногами прошу не бить :)
Рисуется с выпендрежем только первый раз.
Недостаток - BorderStyle = bsNone и многое другое, навреное :))
Вот что получилось:
Type
TForm1 = Class(TForm)
Procedure FormPaint(Sender: TObject);
Procedure FormCreate(Sender: TObject);
Private
{ Private declarations }
Public
{ Public declarations }
NeedSlowShow: Boolean;
Procedure OnEraseBck(Var Msg: TMessage); Message WM_ERASEBKGND;
End;
Var
Form1: TForm1;
Implementation
{$R *.DFM}
Procedure TForm1.FormPaint(Sender: TObject);
Type
TPaintArray = Array[0..255] Of TPoint;
Function GetVal(Var PaintArray: TPaintArray; cSize: Integer): TPoint;
Var
idx: Integer;
Begin
idx := random(cSize);
Result := PaintArray[idx];
PaintArray[idx] := PaintArray[cSize - 1];
End;
Var K, L: Integer;
pArray : TPaintArray;
cSize, W, H, sSize: Integer;
P : TPoint;
Begin
If Not NeedSlowShow Then exit;
sSize := trunc(sqrt(sizeof(pArray) / sizeof(pArray[1])));
cSize := sSize * sSize;
W := round(Width / sSize) + 5;
H := round(Height / sSize) + 5;
For K := 0 To sSize - 1 Do
For L := 0 To sSize - 1 Do
With pArray[K * sSize + L] Do
Begin
X := round(K * Width / sSize);
Y := round(L * Height / sSize);
End;
With Canvas Do
Begin
BRUSH.COLOR := COLOR;
Pen.Style := psClear;
Repeat
P := GetVal(pArray, cSize);
Rectangle(P.X, P.Y, P.X + W, P.Y + H);
Sleep(1);
dec(cSize);
Until cSize = 0;
End;
NeedSlowShow := False;
End;
Procedure TForm1.OnEraseBck(Var Msg: TMessage);
Begin
If NeedSlowShow Then
Msg.Result := 0 Else
Inherited;
End;
Procedure TForm1.FormCreate(Sender: TObject);
Begin
NeedSlowShow := True;
borderstyle := bsNone;
Color := clGreen;
End;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.011 c