Ombre portée sur une WinForm sans bordure
Je suis en train de déposer une ombre autour de l'ensemble de la forme tout comme la première image, sauf que c'est un WPF pas un WinForm. maintenant, je veux supprimer la même ombre sur un winform.
C'est ce que je veux..
Pas..
source d'informationauteur Sam Oyl | 2013-05-11
Vous devez vous connecter pour publier un commentaire.
En WinForms, vous pouvez simplement remplacer le formulaire est protégé
CreateParams
bien et ajoutez leCS_DROPSHADOW
drapeau à la classe les styles. Par exemple:Mais, un couple de mises en garde...
Cet indicateur fonctionne uniquement sur les fenêtres de niveau supérieur. Dans Win32-parler, cela signifie que chevauchants et des fenêtres popup. Il n'a aucun effet sur l'enfant de windows (par exemple, le contrôle). Je croyais me souvenir audience quelque part que cette limitation a été supprimée à partir de Windows 8, mais je ne peux pas trouver un lien de confirmation de cela et je n'ai pas de Windows 8 est installé à des fins de test.
Il est possible que l'utilisateur a désactivé cette fonction en même temps. Si oui, vous n'obtiendrez pas d'ombre portée, peu importe comment vous les demandez. C'est par la conception. Votre application ne devraient pas tenter de remplacer cette demande. Vous pouvez déterminer si les ombres portées sont activées ou désactivées par P/Invoquant la
SystemParametersInfo
fonction et en passant leSPI_GETDROPSHADOW
drapeau.Le thème Aero ajoute également des ombres pour les fenêtres de niveau supérieur. Cet effet est séparée et distincte de
CS_DROPSHADOW
et travaille seulement lorsque Aero est activé. Il n'y a aucun moyen de l'éteindre et de le sur pour des fenêtres individuelles. En outre, puisque le thème Aero a été supprimé à partir de Windows 8, il n'aurai jamais ces ombres.Voici mon C# de mise en œuvre. Il est similaire à l'Al.Pertro, mais vous remarquerez que quand vous perdez le focus et reprendre le focus, l'ombre repeint lui-même.
J'ai aussi ajouté du code pour permettre la souris en faisant glisser.
Humm ,,, Juste passé le code et vous obtiendrez la windows 7 de l'Ombre portée
comme ça >>> http://marcin.floryan.pl/wp-content/uploads/2010/08/WPF-Window-native-shadow.png
Autant que je sache, il n'y a pas de moyen direct de le faire en WinForms.
Au lieu de cela, vous pouvez suivre étape par étape:
1) Créer une image ayant le désiré de l'ombre portée à l'aide de photoshop ou n'importe quel autre outil.
2) Utiliser cette image comme image d'arrière-plan de votre formulaire.
3) Définir la propriété FormBorderStyle de la forme à Aucun.
4) Vous êtes fait!
5) Remarque: assurez-vous d'enregistrer l'image dans le bon format(png), de sorte que l'effet d'ombre portée pourrait fonctionner.