Did you notice that some versions of Windows (I'm using Windows 7) already show the animated minimization? This is the best way, because the user can disable and enable animation for the whole system.
What you consider as attractive "feature" will be considered as just some annoyance by very many users, even if you make it optional. I would advise you to find better application for your talents.
Nevertheless, you can always implement tricks like that. You can always look at the size and location of your application form and modify it. You can always read the size of your active screen:
http://msdn.microsoft.com/en-us/library/system.windows.forms.screen%28v=vs.110%29.aspx[
^].
So, you can create a separate "animation thread" and perform some animation there: change the size and location of your form, making it smaller and smaller, and, at the end to the "real" minimization of that form. The only problem is: you cannot call anything related to UI from non-UI thread. Instead, you need to use the method
Invoke
or
BeginInvoke
of
System.Windows.Threading.Dispatcher
(for both Forms or WPF) or
System.Windows.Forms.Control
(Forms only).
You will find detailed explanation of how it works and code samples in my past answers:
Control.Invoke() vs. Control.BeginInvoke()[
^],
Problem with Treeview Scanner And MD5[
^].
See also more references on threading:
How to get a keydown event to operate on a different thread in vb.net[
^],
Control events not firing after enable disable + multithreading[
^].
—SA