Как я могу сделать этот эффект?
В Delphi я пытаюсь сделать так, чтобы при нажатии кнопки я отображал раскрывающуюся панель с такими параметрами:
Does anyone know how to make this effect with VCL? Now I have a form with 2 panels, the main is always showing and has a side button, and when I press the button the side panel is shown, but I would like to make the effect. Спасибо
4 ответа
Я не знаю ваше заявление подробно, с прозрачностью и другими вещами. Тем не менее, я думаю, что вам придется анимировать свои панели / окна в какой-то цикл самостоятельно. Я не знаю ни одной функции VCL для этого.
Вот пример, который оживляет окно (хотя оно быстрое и грязное):
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
I, X: Integer;
begin
Form2.Width := 1;
Form2.Height := Form1.Height;
Form2.Left := Form1.Left + Form1.Width;
Form2.Top := Form1.Top;
Form2.Show;
Timer1.Enabled := true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if I < 500 then
begin
I := I + 1;
Form2.Width := I;
end
else
begin
Timer1.Enabled := false;
end;
end;
Не идеально, но, надеюсь, достаточно хорошо, чтобы дать вам идею.
Энди
Вы можете использовать TJvRollOut от JVCL Jedi. Он действует как панель, которая разрушается и расширяется. Также вы можете взглянуть на Delphi: скользящую (анимированную) панель и элементы управления Hide, Slide And Fade Away на форме Delphi.
Наконец мне удалось добиться эффекта. Я поставил панель и добавил картинку. Затем я использовал анимированные окна в процессе щелчка мышью.
procedure TFTelefonoSIP.Button1Click(Sender: TObject);
begin
if GDPanelLlamadasHidden = False then
begin
AnimateWindow(Panel1.Handle, 200, AW_SLIDE or AW_HOR_POSITIVE or AW_HIDE);
GDPanelLlamadasHidden := True;
end
else
begin
AnimateWindow(Panel1.Handle, 200, AW_SLIDE or AW_HOR_NEGATIVE or AW_ACTIVATE);
GDPanelLlamadasHidden := False;
end;
end;
Но эффект не совсем то, что я хотел, иногда изображение показывает вспышку, не очень эстетично.
Вы должны включить свойство "Двойная буферизация" в форме заявки... это должно предотвратить мигание.