To see a lovely example of exactly what I am after, please have a look at the screensaver available here. It is worth noting that this is exactly the slideshow effect I am hoping to achieve. It is also notable that the screensaver is open source (C++ .NET) and much could potentially be learned from it. However, I am not after a screensaver, rather a UserControl (which really, could be plopped into a screensaver if one wished).
I require a UserControl developed in C# (will consider C++, but preference to C#).
The control will take a path and display a slideshow of images from image files found in that path (and its subfolders).
The files in the specified path are subject to change (files added or removed at any time) so the control should be adaptable to this and should not queue up too many images for display too far in advance.
The slideshow should employ the 'ken burns effect'. This effect is a slight pan/zoom effect with fading transitions. There should be options to control:
1) Time each photo is displayed
2) Rate of zoom
3) Rate of panning
Again, to see this effect demonstrated please download this screensaver.
Should also allow for the ability to turn all effects off individually. That is, to turn-off zooming, panning, fade transitions (or any combination thereof). If all 3 are off, for example, the slideshow becomes a very simple series of displayed images.
The control should be adjustable to any size. I will throw it on a windows form which can be resized within my application (including full-screen) and dock it to fill the form.
Images should retain their original aspect ratios at all times.
The slideshow should not consume too many system resources as the application it will be used in will be doing other background work as well. I implemented this using GDI+ in C# and was unable to get a smooth effect without consuming 100% CPU.
The slideshow should run smoothly on modest, but modern, computers with modest video capabilities. i.e. I should not require a high-end (or even mid-range) video card to view the slideshow smoothly.
Given my failure with attempting to use GDI+ I feel that either OpenGL or DirectX will be required to make this work well. My preference is to use OpenGL but I am open to either. However, I want the control to be self-ctonained and easy to add to my project. Using an OpenGL wrapper (such as Tao) seems like overkill and seems like it would create nightmares with regard to deploying my application.
The control must not add any complexities to the deployment of the application making use of it. At most, a single DLL would be created to be included with the application containing the control.
In addition to the control I require the following deliverables:
1) All source code for the UserControl, WELL COMMENTED & DOCUMENTED
2) Brief instructions on adding it to a C# project.
3) A demo aplication, with source code, done in C# which makes use of the control.
4) Suggestions as to the minimum system requirements associated with the slideshow control.