je dessine directement à l'écran à l'aide BitBlt
et GetDC(IntPtr.Zero)
. Est-il possible d'appeler Refresh ou Invalidate sur l'ensemble de l'écran lorsque j'ai terminé, pour ne pas laisser de gros morceaux de peinture partout (numériquement parlant)? Lorsque vous dessinez directement sur l'écran comme je le fais, tout ce que vous dessinez reste là jusqu'à ce que la fenêtre en dessous se repeigne (et, ce faisant, repeigne la partie de l'écran qu'il couvre).Comment nettoyer après moi-même quand dessiner directement à l'écran
Le problème est que certaines parties du bureau Windows ne se repeignent pas pendant de longues périodes. Par exemple, si je dessine au-dessus de la barre des tâches, les tâches réelles se repeignent assez rapidement (avec le bouton Démarrer, etc.), mais la barre des tâches elle-même conserve ce que j'ai dessiné pendant quelques minutes.
Si mon application avait une fenêtre qui couvrait tout l'écran, j'appellerais simplement Invalidate()
sur ce formulaire qui le ferait se repeindre et donc l'écran entier. Ce dont j'ai besoin, c'est d'un moyen d'appeler Invalidate
ou Refresh
sur l'ensemble de l'écran lui-même.
Pouvez-vous être plus précis? Où/que dessinez-vous, et quels domaines voulez-vous invalider exactement? (c'est-à-dire voulez-vous que certaines fenêtres soient repeintes? Si oui, quelles fenêtres? etc.) – vladr
Vous voulez probablement faire GetWindowDC (GetDesktopWindow()) pour rendre votre code plus évident et pour assurer votre utilisation non supportée d'une valeur magique. faites en sorte que votre application tombe en panne. –