Как я могу сделать этот эффект?

В Delphi я пытаюсь сделать так, чтобы при нажатии кнопки я отображал раскрывающуюся панель с такими параметрами:

Панель Desplegable

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;

Но эффект не совсем то, что я хотел, иногда изображение показывает вспышку, не очень эстетично.

введите описание изображения здесь

Вы должны включить свойство "Двойная буферизация" в форме заявки... это должно предотвратить мигание.

Другие вопросы по тегам