Вы могли бы сделать это в WinForms, приложив немало усилий, поэтому мне придется повторить рекомендации по использованию WPF (который по сути создан именно для такого рода вещей).
Вашим главным препятствием для этого в WinForms является тот факт, что местоположение элемента управления задается целым числом, что означает, что вы не можете, например, установить для свойства Left
элемента управления значение 45.3425
. Это в основном делает плавную анимацию элементов управления (при условии, что вы хотите движение, изменяющее скорости и направления) совершенно невозможной - таким образом вы получите неизбежный рывок движения (я пробовал, насколько я знаю).
Как предложил SLaks, единственный способ сделать это в WinForms - это "подделать" его, сделав "снимки" каждого элемента управления. По сути, вы бы начали с невидимого растрового изображения размером с форму, нарисованного с помощью BackColor формы. Затем вы должны создать «снимки», вызывая DrawToBitmap () для каждого элемента управления, который хотите анимировать, и создать эффект движения, рисуя снимки на холсте (System.Drawing
может рисовать изображения с координатами с плавающей точкой, избегая рывков целые местоположения).
Хотя это чересчур много. Просто используйте WPF. :)
Редактировать: Я должен упомянуть, что на самом деле просто сделать что-то подобное в WinForms, если вы не возражаете, если вы выглядите ужасно, вяло и любительски. Мои комментарии выше касаются трудностей, связанных с этим хорошо .