Site logo
Site logo
Programmieren aus Leidenschaft
Programmieren aus Leidenschaft

ThumbnailClip


Bewegt man den Mauspfeil über das Taskbar Symbol einer laufenden Anwendung, öffnet sich in einen Fenster eine verkleinerte Vorschau des aktuellen Programmfensters.
Diese, auch als Thumbnail bezeichnete Vorschau, muss aber nicht zwangsläufig immer das komplette Fenster anzeigen.
stacks_image_F029AEA2-854B-4A3E-B469-5FB3B38B67B3
Man kann den ThumbnailClip der Windows 7 Taskbar auch so konfigurieren, dass er nur einen Teil des Fensterinhaltes anzeigt.
In einer WPF Anwendung gestaltet sich das ein wenig kompliziert, da man zur Konfiguration des ThumbnailClip ein Fensterhandle benötigt, das es in Anwendungen dieses Typs nicht so ohne weiteres gibt. Mit Hilfe des WindowInteropHelper ist es aber dennoch möglich, das Fensterhandle zu ermitteln, indem man den folgenden Code dem Fenster hinzufügt.
private IntPtr handle;

public IntPtr Handle
{
        get
        {
                if (this.handle == IntPtr.Zero)
                {
                        System.Windows.Interop.
                        WindowInteropHelper interopHelper =
                        new System.Windows.Interop.WindowInteropHelper(this);
                        this.handle = interopHelper.Handle;
                }
        return this.handle;
        }
}
Jetzt gilt es gewünschten Bildausschnitt zu finden, und der ThumbnailClip ist konfiguriert.
System.Drawing.
Rectangle clippingRectangle = new System.Drawing.Rectangle(

new System.Drawing.Point(0, 5),

new System.Drawing.Size(220, 100));

TaskbarManager.Instance.TabbedThumbnail.SetThumbnailClip(this.Handle, clippingRectangle);
stacks_image_C2E9570C-0237-4C86-8B70-7EC5B845D057
Möchte man im TumbnailClip ein bestimmtes Steuerelement anzeigen, muss man diese Postionen des Objektes nicht in mühevoller Kleinarbeit selbst ermitteln, sondern kann dies im Programmcode errechnen lassen. Wieder sind für eine WPF-Anwendung ein paar mehr Schritt notwendig, da Werte in andere Formate konvertiert werden müssen.
Im folgenden Code wir die Position der Schaltfläche btnOverlay relativ zum Fenster (this) ermittelt und ans TumbnailClip verwendet.
Point relativePoint
        = btnOverlay.TransformToAncestor(this).Transform(new Point(0, 0));
System.Drawing.Point drawingPoint
        = new System.Drawing.Point((int)relativePoint.X, (int)relativePoint.Y);
System.Drawing.Size drawingSize
        = new System.Drawing.Size((int)btnOverlay.ActualWidth, (int) btnOverlay.ActualHeight);
System.Drawing.Rectangle clippingRectangle
        = new System.Drawing.Rectangle(drawingPoint, drawingSize);
TaskbarManager.Instance.TabbedThumbnail.SetThumbnailClip(this.Handle, clippingRectangle);
Der angezeigte Bildausschnitt ist immer identisch mit dem zugehörigen Inhalt des Fensters. Findet im Bildausschnitt eine Animation statt, sieht man diese auch im ThumbnailClip.

Als Erweiterung zum ThumbnailClip können im Thumbnailfenster zusätzliche Button angezeigt werden. Diese Steuerelemente vom Typ ThumbnailToolbarButton bieten nicht viele Konfigurationsmöglichkeiten, können aber ein Icon darstellen.
ThumbnailToolbarButton thumbnailButton1
        = new ThumbnailToolbarButton(Properties.Resources.favourite, "Favorite");
thumbnailButton1.Click
        += new EventHandler<<span style="color:#217F9F;">ThumbnailButtonClickedEventArgs> (thumbnailButton1_Click);

ThumbnailToolbarButton thumbnailButton2
        = new ThumbnailToolbarButton(Properties.Resources.restart, "Restart");
thumbnailButton2.Click
        += new EventHandler<<span style="color:#217F9F;">ThumbnailButtonClickedEventArgs>
(thumbnailButton2_Click);

TaskbarManager.Instance.ThumbnailToolbars.AddButtons(this.Handle, thumbnailButton1, thumbnailButton2);
stacks_image_EE4302AD-DE56-4291-B3DC-58805D0E937C
Im Gegensatz zu den JumpListItem sind die ThumbnailToolbarButton auch für die Bedienung der laufenden Anwendung geeignet und können durch einen Click-Event direkt im Programmcode Methoden aufrufen.

nächste Seite