САЙТ УЧИТЕЛЯ ИНФОРМАТИКИ |
|||||||||||||||
МОУ СОШ №3 г. Осташков Тверская обл. | |||||||||||||||
|
Мини-проекты в Delphi Проект "Прозрачная форма" Интересные эффекты можно получить, если создать прозрачную форму. Используя метод Canvas на форме можно изображать различные примитивы: прямую, эллипс, окружность, прямоугольник. А применяя метод TextOut выводить текст в нужное место на форму. Итак, на форме размещаем два таймера, TransparentColor – true, Color – clNone, WindowState – wsMaxmimized. В разделе implementation объявим переменные
Создаем процедуру для загрузки формы: procedure TForm1.FormCreate(Sender: TObject); begin Timer1.Enabled :=true; Timer2.Enabled :=false; xm:=Screen.Width ; ym:=Screen.Height ; Form1.Width :=xm; Form1.Height :=ym; dx:=round(xm/200); dy:=round(ym/200); x1:=round(xm);x2:=0; y1:=0; y2:=round(ym); end; Закраски формы procedure TForm1.FormPaint(Sender: TObject); begin Canvas.Pen.Width :=1; Canvas.CopyMode :=cmMergePaint; end; И для таймеров: procedure TForm1.Timer1Timer(Sender: TObject);
begin
Canvas.Pen.Color := clGreen;
If x1>0 then
begin
Canvas.MoveTo(x1,0);
Canvas.LineTo(x2,ym);
x1:=x1-dx;
x2:=x2+dx;
if x1<0 then x1:=0;
end
else if y1<= ym then begin
Canvas.MoveTo(0,y1);
Canvas.LineTo(xm,y2);
y1:=y1+dy;
y2:=y2-dy;
end;
if y1>=ym then
begin
Canvas.Font.Color:=clRed;
Canvas.Font.Size := round (Form1.Height/10);
Canvas.TextOut(round(xm/2-Canvas.Font.Size*2),round
(ym/2-Canvas.Font.Size*0.7),’ПОКА!’);
Timer1.Enabled :=false;
Timer2.Enabled :=true;
end;
end;
В ней имитируется вращение прямой зеленого цвета. Для этого начало прямой перемещается с шагом dx по верхнему краю вправо, а конец прямой влево. Затем тоже самое по левому и правому краям экрана с шагом dy. В завершение выводится надпись «ПОКА!» красного цвета в центр экрана, выключается Таймер1 и включатся Таймер2. Таймер2 делает задержку на 2 секунды и закрывает программу. procedure TForm1.Timer2Timer(Sender: TObject); begin Timer2.Enabled :=false; Close; end;
|
||||||||||||||