Как изменить форму с анимацией? - PullRequest
3 голосов
/ 10 ноября 2011

Как изменить форму с анимацией (например, затухание, Cutl Up, ...) в приложении Win?

У меня есть две формы Form1, Form2.Я нахожусь в форме 1 и на ней есть кнопка, и я хочу изменить форму при нажатии кнопки.

//button click
Form2 f2=new Form2();
this.hide();
f2.show();

Ответы [ 2 ]

3 голосов
/ 10 ноября 2011

Вы можете использовать AnimateWindow(), определить новый класс формы и переопределить OnLoad(), чтобы показать форму с желаемыми эффектами.

// Console Application
// Load System.Windows.Forms reference.

[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags);

class SlidingForm: System.Windows.Forms.Form 
{
    const int AW_ACTIVATE = 0X20000;
    const int AW_SLIDE = 0X40000;
    const int AW_HOR_POSITIVE = 0X1;

    protected override void OnLoad(System.EventArgs e)
    {
        AnimateWindow(this.Handle, 1000, AW_ACTIVATE | AW_SLIDE | AW_HOR_POSITIVE);
        base.OnLoad(e);
    }
}

void Main()
{
    var frm = new SlidingForm().ShowDialog;
}

Пример кода дляскрыть элемент управления PictureBox по запросу:

private void button1_Click(object sender, EventArgs e)
{
   const int AW_HIDE = 0x00010000;
   const int AW_SLIDE = 0x00040000;
   const int AW_HOR_NEGATIVE = 0x00000002;
   const int AW_HOR_POSITIVE = 0x00000001;
   // Toggle show/hide
   AnimateWindow(pictureBox1.Handle, 1000, (pictureBox1.Visible) ? (AW_HIDE | AW_HOR_NEGATIVE) : (AW_HOR_POSITIVE) | AW_SLIDE);
   pictureBox1.Visible ^= true;
}
0 голосов
/ 10 ноября 2011

Не вдаваясь в специфику самого кода, я нашел этот вопрос, который затрагивает похожую тему: Простая анимация в WinForms .

Этот вопрос приводит меня к библиотеке под названием dot-net-transitions , которая, я думаю, делает именно то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...