Как уменьшать высоту формы сверху вниз

464
29 декабря 2016, 06:07

Хочу сделать всплывающие окна с эффектом плавного появления и исчезновения. Эффект хочу сделать такой:

  1. this->Height = 0
  2. По таймеру начинает изменяться this->height пока не станет к примеру 100
  3. В таком состоянии форма находится ~2 сек
  4. this->height по таймеру начинает изменяться от 100 до нуля таким образом чтобы форма, какбы сворачивалась начиная с верха.
  5. this->Close();

Первые 2 пункта не сложно и я написал такой класс:

void Opac1ty::height_add(System::Object^  sender, System::EventArgs^  e){
send_forma->Opacity = 0.97;
if (send_forma->Height < height){
    send_forma->Height = send_forma->Height + i;
    //MessageBox::Show("+i");
}
else send_forma->Height = height;
i++;
}
void Opac1ty::set(Form^ form){
send_forma = form;
height = form->Height;
i = 0;
timer = gcnew System::Windows::Forms::Timer;
timer->Interval = 8;
form->Height = 0;
timer->Tick += gcnew System::EventHandler(this, &Opac1ty::height_add);
timer->Start();
}

А вот изменение высоты формы с верху вниз меня застопорило так что даже идей никаких нет. Потому что высота и ширина формы вычисляется от верхнего левого угла (на сколько я знаю). Или может быть можно как то изменить место этого отсчета да еще и в процессе работы формы?

READ ALSO
Как скрыть пуск C#

Как скрыть пуск C#

В общем есть малоэкранное приложение на C#(написанное мною), которое накладывается поверх полноэкранного(чужое), при переходе на малоэкранное...

449
Чтение и запись массива в бинарный файл C#

Чтение и запись массива в бинарный файл C#

Всем доброго времени суток, есть бинарный файл, в который пишет программка написанная на С++ Builder, и которую мне нужно переписатьСтолкнулся...

697
Печать отчёта из XML

Печать отчёта из XML

Доброго времени суток

414
Групповые делегаты

Групповые делегаты

Увидел данный пример и стало интересноКак в данном случае отрабатывает удаление делегата

461