Now I'm with you. You want to be able to do this...
Someone more knowledgable than I would have to describe how to do it via DirectX. I know that creating sprites would be one way.
But if it were me... I would design some sort of "WeatherPanelObject" class that is the white date, black panel, weather icon, weather text and temperatures. This can be something as simple as a form with a transparent back and no frame.
It will need methods for MoveLeft, MoveRight, MoveUp, MoveDown... SetDay, SetWeather, SetTemp and so on. (Change the .Location property) Looks like it will also need a SetOpacity method.
The animation is then just a matter of...
- SetDay("Friday");
-
SetWeather("Cloudy");
-
SetTemp(35,Temp.Centigrade);
-
SetOpacity(10);
-
MoveUp();
-
MoveUp();
-
SetOpacity(15);
-
MoveUp();
-
MoveLeft();
-
SetOpacity(25);
And so on to create the desired direction of movement.
Of course there are dozens of variations on exactly how certain parts could be done. That's where your programming style comes in. Maybe you don't want to explicity set the opacity as you move it. (Too much work for the sending method) So your WeatherPanelObject has its own timer that starts when it is first displayed and automatically increases the opacity every 500 milliseconds.
Maybe instead of having to send lots of MoveLeft(), MoveRight() commands you just want to send it an Argument of where it is supposed to be located like Position(1,5) meaning take up position 1 out of 5, which would be a different calculated position than if it were Position(1,3);
My personal plan would probably have all the methods for the parent class to move or change it, but send it an Argument class at creation that has all of its data (Temp, day, weather, position x out of y, etc.) then have it take control of itself from there. The creating parent class just has to make it. The child is does the rest on its own. The parent then can occassionally send updates if it is still on screen.