2009-07-28 7 views
3

Ich möchte dem Benutzer einen "Wartecursor" anzeigen, wenn er auf das Laden von etwas warten muss. Der Cursor sollte eine animierte Reihe von Bitmaps sein..NET Compact Framework 3.5 animierter transparenter Wartecursor

Ich kann ein UserControl verwenden, das ich zu einem Formular hinzufügen kann, aber das UserControl ist nicht selbst transparent.

Ich nahm die Codebeispiel hier (http://www.microsoft.com/downloads/details.aspx?FamilyId=33817CE0-B5E9-4B8E-916B-E6A381E03789&displaylang=en). Während es funktioniert, möchte ich in der Lage sein, die Animation von dem Formular in einem separaten Objekt zu entkoppeln. Wenn ich das tue, funktioniert es für die Beispielanwendung aber nicht für meine tatsächliche Anwendung.

Irgendwelche Vorschläge? Dies ist in .NET CF 3.5

Antwort

2

Was Sie erreichen möchten, ist eigentlich ziemlich schwierig, da Windows CE keine transparenten Fenster unterstützt. Sie können die Transparenz von Colorkey verwenden, um ein Bild mit Transparenz auf ein Fenster zu zeichnen. Wenn dieses Fenster jedoch ein weiteres Fenster überlappt (wie in einem UserControl oben auf einem Formular), erhalten Sie entweder einen grauen Hintergrund oder ein " auf dem Desktop, abhängig davon, ob Sie OnPaintBackground im UserControl überschrieben haben.

Was müssen Sie tun, um es zu Arbeit zu kommen, ist die Usercontrol muss tatsächlich an ihre Mutter aufrufen und rufen es ist OnPaint-Methode mit den Grenzen Ihrer Clippingbereichs vor Ihrer das Usercontrol zeichnen sich.

Leider habe ich kein einfaches Codebeispiel dafür, denn wo wir es verwenden, haben wir es über eine Basis und Schnittstelle, die in einem IoC-Arbeitsbereich implementiert ist, ziemlich eng an das Projekt-UI-Framework gekoppelt. Es würde mich ein paar Stunden dauern, nur um es zu einem einfachen Beispiel zu destillieren (was ich für einen Blogeintrag eines Tages tun werde, aber nicht heute).

+0

Ich denke, es ist das Clipping ist ich nicht tun. Ich habe eine Version, die mit einem Benutzersteuerelement ohne Transparenz funktioniert. Ich habe eine zweite, die überhaupt nicht funktioniert in meiner App (arbeitet in MSDN-Beispiel), wo ich eine Grafik aus einer Formularreferenz erstellen und dann Graphics.DrawImage() verwenden. Dies ist wahrscheinlich mit OnPaint zu tun ... – chocojosh

2

Es gibt etwas Gleichwertiges in der nativen CF ohne Drittanbieter-Bibliothek:

Cursor.Current = Cursors.WaitCursor; // Show the "Loading" image in the middle of the screen 

auszublenden:

Cursor.Current = Cursors.Default;