Nicht-quadratisches Symbol auf Windows Form?

8

Ist es möglich, ein Symbol in der oberen linken Ecke eines Windows-Formulars anzuzeigen, das eine andere Form als das Standard-16x16-Pixel-Symbol hat?

Es scheint, dass Skype ein Symbol hat, das viel breiter als der Standard ist:

Ist das in einer Windows Forms App möglich?

    
Dave 08.05.2012, 15:51
quelle

4 Antworten

3

Sie können dies tun, aber es ist wahrscheinlich mehr Mühe, als es wert ist, nur ein größeres Symbol zu haben.

Hans hat einen Artikel gepostet, der grob auf die Informationen hinweist, die benötigt werden, um eine Antwort auf diese Frage zu finden, hat aber keine Antwort selbst gepostet und so werde ich das klären.

Der alte Weg (vor Vista) besteht darin, die WndProc Methode auf Ihrem Formular und behandeln Sie die WM_NCPAINT Nachricht. Beachten Sie, dass Sie jetzt dafür verantwortlich sind, den gesamten Fensterrahmen (den Fensterrahmen, den Titel, die Symbole zum Schließen / Wiederherstellen usw.) zu zeichnen, nicht nur das Symbol - dh es ist eine Menge davon Mühe, eine relativ kleine Sache zu tun.

Der neuere Weg (nach Vista) ist Verwenden Sie die DWM-API - beachten Sie, dass diese API nicht direkt über das .Net-Framework verfügbar ist. Daher müssen Sie in C # P / Invoke verwenden. Das Bit, das Sie ausführen möchten, ist der Abschnitt "Zeichnen im erweiterten Rahmenfenster", in dem Sie den Bereich, für den Sie zeichnen, außerhalb des normalen Clientbereichs und in den Fensterrahmen erweitern. Das ist weniger mühselig als früher (Sie müssen keine Dinge wie die Schließen-Buttons zeichnen), bedeutet aber immer noch, dass Sie die Verantwortung für viele Dinge übernehmen, die Sie normalerweise nicht tun würden, wie zum Beispiel einen Hit-Box-Test für die Größenänderung und bewegen.

Grundsätzlich ist es nicht so einfach wie ein größeres Symbol und für die meisten Anwendungen ist es wahrscheinlich mehr Mühe als es wert, aber Sie können dies in C # tun und dieser Artikel sollte Sie starten, wenn Sie es wirklich versuchen wollen .

    
Justin 08.05.2012, 16:30
quelle
2

Ich weiß, dass du nach einem einfachen Code-Weg suchst, aber ich lade dich ein, DevExpress manged zu testen (ja, es ist eine dritte Partei, verzeih mir), google es einfach ... Ich habe diesen Thread gesehen und ich habe Fragen bei deexpress gestellt mit Unterstützung und habe einige beeindruckende Ergebnisse, die Sie interessieren könnten.

Hier ist das Ticket, das ich einlege ... Ссылка

Hier ist das Ergebnis ... Ссылка

Bisher habe ich das auf Xp, Vista und Windows 7 ohne Probleme mit Winforms verwendet.

Ich hoffe, das hilft oder gibt Ihnen eine andere Option, wenn die Windows-API nicht wie gewünscht auf verschiedenen Windows-Versionen funktioniert.

Danke, David

    
David Eaton 11.05.2012 12:32
quelle
0

Glauben Sie nicht, dass es ein Icon ist, wenn Sie genau das Bildformat ICO meinen. Wenn man bedenkt, dass das Skype-Fenster definitiv ein OwnerDraw-Fenster ist, kann das Bild möglicherweise das sein, was Sie wollen.

Der Trick besteht darin, ein Bild so darzustellen, dass die Pixel einer bestimmten Farbe (Hintergrundfarbe) des "Icons" übersprungen werden, also in "Transparenz" rendern.

Dieser Artikel kann Ihnen einen Hinweis geben:

Transparente Bilder und Formen mit Alpha Blending zeichnen

Es ist alt, aber immer ein guter.

    
Tigran 08.05.2012 15:58
quelle
0

Ja. Überschreiben Sie WndProc und implementieren Sie WM_NCPAINT.

    
Joshua 08.05.2012 16:00
quelle

Tags und Links