'Sheets' is the name Apple gave to their modal dialog system in OS X. They're those animated drop-down dialog windows you get flying out of the titlebar and unfolding. They're often used for open/save/print dialogs, and for toolbar customization. I think (in principle, at least) they're great because they clearly tie a window-modal dialog with its parent: dragging or moving the parent window also moves the dialog. However the main complaint is how it obscures the view of the original document.
Anyway, here's an example of Sheets in action:
http://hints.macworld.com/images/sheet_before.mov
I understand you could implement this kind of feature by applying a series of complicated global transforms to the graphics object with a different transform per frame of animation (alternatively, render the whole dialog to a bitmap and then apply transformations to that). At least that's how you'd do it in theory.
...what I want to know is how you'd do it in practice. In MS Windows having a window that has an alpha component is expensive and often has painting issues (as anyone who has seen Adobe's recent splash screens can testify).
In WinForms this can probably be done by creating a new 32-bit Bitmap object, creating a Graphics/DC, and telling a parent form to paint to this new DC (it would then recursively render all the child controls). You'd then display the animation with this single bitmap, after the animation has played you then display the 'real' form. However you lose the ability to get interactive controls whilst in mid-animation. Apple did something like this in earlier builds of Safari for Windows, so I know it isn't something you can only do with the assistance of the window manager.
I'm also interested to hear how you would accomplish this in WPF. I imagine it might be easier, as you can have chrome-less WPF windows and apply arbitrary 3D transformations to them and maintain control interactivity, but by using WPF...you'd be using WPF and all of the related hassle.
Does anyone have any thoughts on this?
Thread Closed
This thread is kinda stale and has been closed but if you'd like to continue the conversation, please create a new thread in our Forums,
or Contact Us and let us know.