Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];




Вниз

Общеобразовательный вопрос: как делают форму 


Aleksandr   (2002-03-29 15:06) [0]

Видел тут программу - стартовое окошко как бы "проявляется" точками, пока полностью не появится... Страдал-страдал, но SetWindowsRgn что-то так и не добился ничего... Ето-нить знает, как это делается?



Anatoly Podgoretsky   (2002-03-29 15:21) [1]

Рисую на канве



McSimm   (2002-03-29 15:30) [2]

В момент появления формы берется фотография участка экрана. Затем по определенному алгоритму полученный битмап преобразуется к финальному битмапу - точной копии формы, после чего показывается сама форма.



Anatoly Podgoretsky   (2002-03-29 15:35) [3]

McSimm © (29.03.02 15:30)
Добавлю только, что это многократно, пока не проявишь всю форму



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;



Aleksandr   (2002-03-29 17:51) [5]

Оригинально и красиво... %|



Alx2   (2002-03-29 17:59) [6]

>Aleksandr © (29.03.02 17:51)
А вот контролы на форме не могу вывести. Сейчас бодаюсь в http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1017411600&n=0
присоединяйся! Может что проясним :)




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.025 c
1-32837           CrazyAngel            2002-03-28 18:00  2002.04.11  
Как найти приложение , которое блокирует файл ?


1-32840           snoup                 2002-03-29 08:38  2002.04.11  
Посоветуйте и скажите где можно скачать компонент для работы с ин


3-32625           RemVal                2002-03-19 09:56  2002.04.11  
Проблемы с ADO


1-32739           LazorenkoX            2002-03-30 00:09  2002.04.11  
Движок БД (file of XXX)


1-32850           AFROLOV               2002-03-28 15:37  2002.04.11  
Как узнать что пользователь нажал функциональную клавишу (F1-F12)