Comment le système d'exploitation garde-t-il une trace de la position des objets sur l'écran?


-2

Je sais que l'affichage utilisant des normes telles que VGA peut être considéré comme une matrice de pixels au moins pour le système d'exploitation. Mais les écrans modernes incluent des contrôles d’interface utilisateur complexes tels que des boutons et des zones de texte.
Je ne sais pas si le système d'exploitation fait tout le travail ou est-ce quelque chose fourni par la technologie de la souris out of box.

La question qui se pose maintenant est la suivante: comment le système d’exploitation garde-t-il une trace des positions de   ces contrôles afin de contrôler par programme.


Cette question est trop générale et partiellement ambiguë. Parlons-nous des interactions du pipeline de rendu GPU? Parlons-nous de tampons? Parlons-nous de systèmes de fenêtrage ou de rendu de widget? Compteriez-vous les applications qui utilisent les fonctionnalités du système d'exploitation pour rendre les widgets d'application "gérés par le système d'exploitation"? Vous demandez quelque chose de très technique d'une manière très vague.
jdwolf

@jdwolf Oui, vous avez raison, cette question est trop générique. Et vous touchez à quelque chose que j'essayais de demander. widget rendering. Les widgets sont liés à leur logiciel par des événements, par exemple, un clic. Comment le positionnement des widgets est-il mis en œuvre? Comment le système d'exploitation détermine-t-il le widget devant recevoir l'événement à partir de la souris?
Cholthi Paul Ttiopic

Je comprends qu'il y a beaucoup d'abstraction dans le jeu et je ne comprendrai pas tout dans une explication.
Cholthi Paul Ttiopic

Vous devriez peut-être poser cette question précisément dans une nouvelle question. Mais en tant que widget teaser comme Qt et GTK +, ils effectuent beaucoup de leur propre rendu et utiliseront le GPU pour accélérer avant de transmettre une référence du contenu rendu aux bibliothèques de systèmes exploités et au serveur d'affichage en tant que tampon dans de nombreux cas. Ils peuvent transformer un widget partiellement rendu par le système d'exploitation. La plupart des boîtes à outils n'utilisent pas directement les widgets X car chaque propriété doit être mise à jour avec des messages pour repositionner un widget, mais les widgets peuvent être déplacés par rapport à leur parent, etc.
jdwolf

Réponses:


2

Les coordonnées des boutons, les dimensions des boutons et les coordonnées du pointeur de la souris sont stockées dans la mémoire. Lorsque l'utilisateur appuie sur un bouton de la souris, le système d'exploitation compare la position du pointeur de la souris avec les positions des contrôles de l'interface utilisateur et détermine l'action appropriée.

Les normes d'affichage et les dessins ne sont pas liés, il s'agit d'une opération purement mathématique.


près de l'image mentale que j'avais
Cholthi Paul Ttiopic

1

Vous avez les coordonnées de l'écran et "Windows" (Rectangles). Ainsi, vous pouvez toujours savoir quel objet "possède" le pixel auquel se trouve votre pointeur. Il suffit de le parcourir récursivement à travers les structures à vérifier.

+---------------------+
+      +------+       +
+      +  X   + +--+  +
+      +------+ +  +  +
+               +--+  +
+---------------------+

Windows peut être hiérarchique et en cascade. Par exemple. Les éléments de l'interface graphique ne sont que des sous-fenêtres dans ce contexte. Le système d'exploitation démarrera à partir d'une racine (qui contient une liste de toutes les fenêtres "de niveau racine") et pourra donc faire correspondre la position de la souris à tous les rectangles. Ensuite, il vérifie si le rectangle est au premier plan / a le focus, etc. Puis répète les mêmes vérifications avec les "Windows" (éléments graphiques) situés dans cette fenêtre. Finalement, il appelle simplement la fonction de gestionnaire d'événements associée à l'élément d'interface graphique de niveau le plus bas.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.