Quelle est la meilleure méthode pour dessiner des graphiques de superposition sur Windows?

StackOverflow https://stackoverflow.com/questions/1678378

  •  16-09-2019
  •  | 
  •  

Question

Je travaille avec une application Win32 qui doit créer une variété de types de fenêtre sur mesure. En particulier, ces fenêtres sont souvent non-rectangle, des ombres, ou la plupart du temps sont transparents.

Je suis actuellement à l'aide WS_EX_LAYERED avec UpdateLayeredWindow pour créer des fenêtres transparentes que je peux alors dessiner mes graphiques arbitraires. Cependant, je trouve les fenêtres en couches à limitants dans ce que vous ne pouvez pas avoir des fenêtres de l'enfant en couches, ne peuvent une fenêtre en couches hôte correctement les contrôles Win32 « normaux ».

Notre base de code est vieux de plusieurs années, en utilisant la plupart du temps Win32 et GDI, mais nous sommes en train de moderniser les choses et il est temps de regarder les nouvelles technologies.

Je l'ai envisagé de faire mon fenêtrage personnalisé dans WPF, mais je suis préoccupé par ce que j'ai lu sur les questions « espace aérien ». Il semble que WPF utilise des fenêtres en couches pour réaliser son mélange alpha par pixel et semble donc que ce serait aussi souffrir des limites que je l'ai déjà expérimenté.

Je ne sais pas grand-chose (quoi que ce soit, vraiment) à propos de Direct2D, mais que la technologie semble que cela pourrait être intéressant. Bien que, je ne trouve aucune référence à elle être capable de faire des fenêtres de recouvrement.

Alors, tout cela me amène à mon problème: Quelle est la meilleure technologie pour faire des fenêtres de recouvrement sous Windows? (Vista et Win7 au minimum, XP serait agréable d'avoir)

Suis-je négligeais certains, en particulier une bonne technologie? Toutes les suggestions seraient appréciés.

Était-ce utile?

La solution

Je recommande Direct2D et DirectWrite que vous obtenez rendu de haute qualité qui est aussi ridiculement rapide par rapport à soit GDI ou quoi que ce soit fait dans l'espace .Net. Le seul problème est que vous avez besoin Vista ou version ultérieure OS à l'utiliser.

Autres conseils

WPF peut faire ce que vous cherchez très facilement, mais cette caractéristique particulière de WPF (Windows avec la transparence par pixel) a tendance à être très problématique en raison de pilotes bugs (fabricants de matériel apparemment graphiques graphiques ne testent pas Direct3D couches fenêtres par la valeur alpha de pixels très bien).

WPF n'utilise les fenêtres en couches pour la transparence, mais il ne pas utiliser les contrôles win32 « normaux », tous les contrôles WPF dans une fenêtre les rendre auto en utilisant une seule fenêtre win32, ils toute transparence de soutien.

La question « de l'espace aérien » ne se produit que lorsque vous hébergez un contrôle WinForms dans une fenêtre WPF.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top