2009-11-05 14 views
10

Estoy tratando de hacer una aplicación que necesita dibujar en el escritorio, detrás de los iconos para que parezca reemplazar el fondo de escritorio. He encontrado algunas soluciones para esto, pero la mayoría de ellos no funcionaron muy bien (mucho parpadeo). Una solución seems to be what I'm looking for, pero realmente no la entiendo. He hecho aplicaciones de C# en su mayoría utilizando bibliotecas de gráficos de nivel superior o solo formularios de Windows, y algunos C++, pero solo en plataformas que no son de Windows.Dibujando en el fondo del escritorio como reemplazo de fondo de pantalla (Windows/C#)

¡Si alguien pudiera "traducirlo" por mí o proporcionarme una solución alternativa, sería muy apreciado!

Respuesta

7

nunca encontré la solución que quería, pero aquí son los mejores (sólo?) Alternativas:

  • señalar a la ventana "SysListView32" (ProgMan -> SHELLDLL_DefView -> SysListView32). Esto dibujará detrás de los íconos del escritorio, pero parpadeará cuando se use la animación. Cómo: Link (tendrá que usar interoperabilidad en .NET).

  • Use superposiciones DirectDraw. Establece el color del escritorio en un determinado color oscuro y todo con ese color se reemplazará con lo que está en la superposición. Esto se usa en el ejemplo en mi pregunta y en el modo de fondo de pantalla de VLC. Sin embargo, esto es incompatible con Aero. Cómo: Link (¿Supongo que podría usar Managed DirectX en .NET?).

+0

¿Alguna noticia sobre esto? – Ampere

+0

Tristemente no, hasta donde yo sé. Me he dado por vencido con lo que estaba tratando de hacer, parece que no es realmente posible. – nardi

+2

Esto es muy tarde, pero pude hacerlo con este [enlace] (http://www.codeproject.com/Articles/856020/Draw-Behind-Desktop-Icons-in-Windows). – Clark

0

Sí, con la interoperación, vea this hilo.

+0

que atraiga por encima de todo; Estoy buscando dibujar detrás de todo (excepto el fondo de escritorio). – nardi

1

Puede encontrar inspiración en el código del reproductor multimedia VLC. hay un wallpaper mode que hace lo que estás buscando.

0

Visto en esta pregunta de pasada y me solucionaba parcialmente el problema (pero no de una manera que puedo dar ningún código útil) para hacer algunos juegos fresco a pesar de que no tenga la aplicación que desee:

  • Conjunto de fondo de escritorio vuelva a la normalidad y tomar una captura de pantalla del escritorio
  • Conjunto de escritorio fondo negro y tomar una captura de pantalla del escritorio
  • Conjunto de escritorio fondo blanco y tomar una captura de pantalla del escritorio
  • Combina las versiones en blanco y negro para hacer una máscara y la primera captura de pantalla como la superposición configurando valores de píxeles que son diferentes transparentes.

Ahora en su formulario de extraer las siguientes en orden:

  1. Dibuje la primera pantalla
  2. Dibuja tu forma material
  3. Dibujar la superposición de escritorio que ha creado

esto es Lo que hice para una pantalla completa, pero creo que podría ser adaptado para formas de pantalla no completa. Esencialmente ha recreado el escritorio pero con la capacidad de hacer cualquier cosa con él, incluidos algunos juegos geniales. La velocidad y el rendimiento del sorteo son satisfactorios para cualquier aplicación, pero la interactividad en el escritorio es un problema ... :(Aquí hay una foto de un juego de tanques utilizando el principio, excepto que configuré el fondo blanco y también hice transparentes todos los fondos blancos.

My Tanks Game

Cuestiones relacionadas