WM6 .Net Эффекты формы C # - PullRequest
2 голосов
/ 18 июня 2009

Хотелось бы узнать, возможно ли создать красивые эффекты формы на компактной платформе.

Мой план заключается в том, что когда пользователь выбирает изображение в главной форме, оно открывается в новой форме, в настоящее время это работает. Теперь я хочу сделать так, чтобы форма, содержащая полноразмерное изображение, загружалась с края экрана (слева или справа) на высоте около 4 пикселей, а затем скользила в поле зрения. Как только форма полностью появится на экране, увеличьте высоту, пока она не достигнет максимума для экрана.

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

Я пробовал приведенный ниже код при создании экземпляра формы, и свойство dp.Top всегда было равно 0 независимо от dp.Width == 240

DisplayPicture dp = new DisplayPicture(ImageUrl);
dp.WindowState = FormWindowState.Normal;
dp.Left = dp.Width * -1;
dp.Top = (dp.Height / 2) - 2;
dp.Height = 4;
dp.ShowDialog();       

В форме DisplayPicture у меня также есть следующее, чтобы попытаться переместить форму, но так как она не устанавливает свойство Top, этот код еще не имеет значения.

void t_Tick(object sender, EventArgs e)
{
    if (this.Left < 0)
        this.Left += 5;

    if (this.Left > -1)
    {
        this.Left = 0;
        if (this.Height < pictureBox1.ClientRectangle.Height)
        {
            this.Height += 4;
            this.Top -= 2;
        }

        if ((this.Left == 0) && (this.Top == 0))
            t.Enabled = false;

    }
}

Любая помощь будет принята с благодарностью!

ТИА

ONESHOT

1 Ответ

1 голос
/ 18 июня 2009

Для этого начните с элемента управления PictureBox, в который загружено ваше изображение. Установите для высоты значение 4, для ширины - ширину формы и (что очень важно) для SizeMode PictureBox - StretchImage .

Затем поместите PictureBox за пределы экрана, установив Top на 0 и Left на -Width. Поместите элемент управления Timer в форму с интервалом 100 (или любым другим), и его событие постепенно перемещает PictureBox вправо, пока его свойство Left не станет 0. Как только вы достигнете этой точки, событие таймера будет постепенно увеличивать Высота до достигает высоты формы.

Возможно, вам придется иметь дело с мерцанием, но это должно помочь вам начать.

Обновление: я только что прочитал ваш вопрос немного ближе и понял, что вы действительно хотите переместить саму форму из закадрового в полноэкранный режим. Это невозможно, если вы хотите анимировать всю форму (включая строку заголовка вверху) таким образом, но вы можете сделать это, установив FormBorderStyle формы (или я думаю, что это просто называется BorderStyle в Compact Framework) Никому. Если для BorderStyle установлено значение «Нет», изменение свойств «Высота», «Ширина», «Вверх» и «Влево» фактически окажет видимое влияние на форму (хотя форма будет без полей). В Windows Mobile эти свойства в противном случае полностью игнорируются , поэтому, вероятно, ваш код ничего не делает.

Обновление 2: вот мой ответ на похожий вопрос WM, который может помочь вам сделать анимированное окно похожим на реальное окно.

...