2009-11-05 10 views
10

Ich versuche, eine Anwendung, die auf dem Desktop zeichnen muss, hinter den Symbolen zu erstellen, so scheint es das Desktop-Hintergrundbild zu ersetzen. Ich habe ein paar Lösungen gefunden, aber die meisten funktionierten nicht sehr gut (viel Flimmern). Eine Lösung seems to be what I'm looking for, aber ich verstehe es nicht wirklich. Ich habe hauptsächlich C# -Anwendungen mit entweder höheren Grafikbibliotheken oder nur Windows Forms und C++, aber nur auf Nicht-Windows-Plattformen gemacht.Zeichnen auf dem Desktop-Hintergrund als Hintergrundersatz (Windows/C#)

Wenn jemand es für mich "übersetzen" oder mir eine alternative Lösung liefern könnte, wäre es sehr geschätzt!

Antwort

7

Ich fand nie die Lösung, die ich wollte, aber hier sind die besten (nur?) Alternativen:

  • Draw zum "SysListView32" Fenster (ProgMan -> SHELLDLL_DefView -> SysListView32). Dadurch werden die Desktop-Symbole gezeichnet, flackern jedoch, wenn die Animation verwendet wird. Gewusst wie: Link (Sie müssen Interop in .NET verwenden).

  • Verwenden Sie DirectDraw-Overlays. Sie legen die Desktopfarbe auf eine bestimmte dunkle Farbe fest und alles mit dieser Farbe wird durch das ersetzt, was auf dem Overlay ist. Dies wird im Beispiel in meiner Frage und im VLC-Hintergrundmodus verwendet. Dies ist jedoch mit Aero nicht kompatibel. Gewusst wie: Link (Ich denke, Sie könnten Managed DirectX in .NET verwenden?).

+0

Irgendwelche Neuigkeiten dazu? – Ampere

+0

Leider nicht, soweit ich weiß. Ich habe etwas aufgegeben, was ich versucht habe zu tun, scheint, dass es nicht wirklich möglich ist. – nardi

+2

Das ist super spät, aber ich konnte es mit diesem [Link] (http://www.codeproject.com/Articles/856020/Draw-Behind-Desktop-Icons-in-Windows) tun. – Clark

0

Ja, mit Interop, siehe this Thread.

+0

Die obendrein ziehen würde; Ich möchte hinter allem (außer dem Desktop-Hintergrund) zeichnen. – nardi

1

Sie können Inspiration in der VLC-Media-Player-Code finden. Es gibt eine wallpaper mode, die das tut, wonach Sie suchen.

0

diese Frage im Vorbeigehen gesehen und ich habe teilweise das Problem (aber nicht in einer Weise, die ich alle nützlichen Code geben kann) lösen einige coole Spiele zu machen, obwohl Sie vielleicht nicht die Anwendung haben:

  • Set Desktop-Hintergrund zu normalisieren und einen Screenshot von dem Desktop
  • Set Desktop-Hintergrund schwarz und einen Screenshot von dem Desktop
  • Set Desktop-Hintergrund weiß und einen Screenshot von dem Desktop
  • Kombinieren Sie die Schwarz-Weiß-Versionen, um eine Maske und den ersten Screenshot als Overlay-Einstellung Pixelwerte, die verschiedene transparent sind.

Jetzt auf Ihrem Formular folgendes ziehen, um:

  1. Zeichnen Sie die erste Screenshot
  2. Zeichnen Sie Ihre Form Zeug
  3. die Desktop-Overlay Zeichnen Sie
  4. erstellt

Dies wird Was ich für eine Vollbildform gemacht habe, könnte aber leicht für nicht volle Bildschirmformen angepasst werden, denke ich. Im Wesentlichen haben Sie den Desktop neu erstellt, aber mit der Möglichkeit, etwas damit zu tun, einschließlich einiger cooler Spiele. Die Ziehgeschwindigkeit und die Leistung sind für jede Anwendung zufriedenstellend, aber Desktop-Interaktivität ist ein Problem ... :(Hier ist ein Bild eines Panzerspiels, das das Prinzip verwendet, außer dass ich den Hintergrund weiß setze und alle weißen Hintergründe auch transparent machte!

My Tanks Game

Verwandte Themen