Dessin sur l’arrière-plan du bureau comme remplacement de papier peint (Windows / C #)

J’essaie de faire une application qui doit dessiner sur le bureau, derrière les icons, de sorte qu’il semble remplacer le papier peint du bureau. J’ai trouvé quelques solutions à cela, mais la plupart ne fonctionnaient pas très bien (beaucoup de scintillement). Une solution semble être ce que je recherche , mais je ne comprends pas vraiment. J’ai fait principalement des applications C # en utilisant soit des bibliothèques graphiques de niveau supérieur, soit des Windows Forms, et des C ++, mais uniquement sur des plates-formes non-Windows.

Si quelqu’un pouvait le “traduire” pour moi ou me fournir une solution alternative, ce serait très apprécié!

Je n’ai jamais trouvé la solution que je voulais, mais voici les meilleures (seulement?) Alternatives:

  • Dessinez dans la fenêtre “SysListView32” (ProgMan -> SHELLDLL_DefView -> SysListView32). Cela va dessiner derrière les icons du bureau, mais clignotera lorsque l’animation est utilisée. Comment: lier (vous devrez utiliser l’interop dans .NET).

  • Utilisez les superpositions DirectDraw. Vous définissez la couleur du bureau à une certaine couleur obscure et tout ce qui est avec cette couleur sera remplacé par ce qui est sur la superposition. Ceci est utilisé dans l’exemple de ma question et dans le mode fond d’écran VLC. Cependant, ceci est incompatible avec Aero. Comment: créer un lien (je suppose que vous pouvez utiliser Managed DirectX dans .NET?).

Vous pouvez trouver l’inspiration dans le code du lecteur multimédia VLC. il y a un mode fond d’écran qui fait ce que vous recherchez.

Oui, avec interop, voir ce fil

Vu cette question en passant et j’ai partiellement résolu le problème (Mais pas en quelque sorte je peux donner un code utile) pour faire des jeux sympas même si peut-être pas l’application que vous voulez:

  • Définir l’arrière-plan du bureau à la normale et prendre une capture d’écran du bureau
  • Définir l’arrière-plan du bureau noir et prendre une capture d’écran du bureau
  • Définir le fond d’écran blanc et prendre une capture d’écran du bureau
  • Combinez les versions en noir et blanc pour créer un masque et la première capture d’écran en tant que superposition définissant des valeurs de pixels transparentes différentes.

Maintenant, sur votre formulaire, tracez les éléments suivants dans l’ordre:

  1. Dessine la première capture d’écran
  2. Dessine tes trucs de forme
  3. Dessinez la superposition du bureau que vous avez créée

C’est ce que j’ai fait pour un formulaire en plein écran, mais je pense que cela pourrait être facilement adapté pour des formulaires non plein écran. Essentiellement, vous avez recréé le bureau mais avec la possibilité de faire n’importe quoi avec certains jeux sympas. La vitesse et les performances de dessin sont satisfaisantes pour toutes les applications, mais l’interactivité du bureau est un problème …

Mon jeu de chars