Due to the nature of the Windows Forms Platform, the WinTilePanel can become slow, choppy, and possibly even unusable if it is used in certain ways.
Transparency and alpha-blending can introduce a performance hit to the painting logic of any Control in Windows Forms. This is because transparent Controls are actually opaque, but they first ask their parent control to draw to their Graphics object before the Control paints itself. This gives the illusion of transparency, but it also means that the parent Controls are painting themselves a second time. In the WinTilePanel, there are a few layers of Controls:
If the Appearance of WinTilePanel is such that the control will need to use alpha-blending, the WinTilePanel, TileContainerLarge, and TileContainerNormal must all use transparency. So the Form (or other parent control) will first paint. Then when the WinTilePanel paints, it will ask the Form to paint into the Graphics object and then it will paint itself. Similarly, when the TileContainerNormal paints, it will ask the WinTilePanel to paint into the Graphics object, which will first ask the Form to paint. Then the WinTilePanel will paint itself and then the TileContainerNormal will paint itself. The same will occur with the TileContainerLarge. So for each paint operation, the Form will paint four times and the WinTilePanel will paint three times.
Because of the nature of transparency described above, it is strongly recommended that the WinTilePanel remain opaque. It is also recommended that each WinTile control remain opaque. If the WinTilePanel and its WinTile controls are both using alpha-blending, the entire control will quickly become unusable with only a few tiles.
The WinTilePanel is managing all tiles during tile drag operations and state change animations. During a state change, every tile must be repositioned and animated. This causes a layout and repaint of the WinTilePanel and TileContainerPanel controls at each step of the animation. Having a large number of controls could cause a noticeable slowdown during animations. If a large number of tiles are to be used in the WinTilePanel, it is recommended that WinTilePanel.AnimationsEnabled is set to False to prevent this choppiness during animations. Some choppiness may still be visible during a user tile drag operation. Also, it is difficult to define the number of tiles that is considered "large." Obviously, using more complex controls in each tile would lower that number and you may start to see choppiness with only five or ten tiles. With very simple controls in each tile, the WinTilePanel may support one hundred or even more tiles.
This article was written by Mike Dour, Lead Developer for WinTilePanel.