¿Cómo controla el sistema operativo las posiciones de los objetos en la pantalla?

-2

Sé que la pantalla que utiliza estándares como VGA se puede ver como una matriz de píxeles al menos para el sistema operativo. Pero las pantallas modernas incluyen controles complejos de IU como botones y cuadros de texto.
No sé si el sistema operativo hace todo el trabajo o si es algo proporcionado por la tecnología del mouse fuera de la caja.

La pregunta ahora es, ¿cómo el sistema operativo realiza un seguimiento de las posiciones de   Estos controles para controlar programáticamente.

Cholthi Paul Ttiopic
fuente
Esta pregunta es general y en parte ambigua. ¿Estamos hablando de las interacciones de la tubería de representación GPU? ¿Estamos hablando de buffers? ¿Estamos hablando de sistemas de ventanas o de representación de widgets? ¿Contaría las aplicaciones que usan las características del sistema operativo para representar los widgets de la aplicación "manejados por el SO"? Estás pidiendo algo muy técnico de una manera muy vaga.
jdwolf
@jdwolf Sí, tienes razón, esta pregunta es demasiado genérica. Y tocas algo que estaba tratando de preguntar. widget rendering. Los widgets están vinculados a su software por eventos, por ejemplo, clic. Cómo se implementa el posicionamiento de los widgets. ¿Cómo determina OS el widget para recibir el evento desde el puntero del mouse?
Cholthi Paul Ttiopic
Entiendo que hay mucha abstracción en juego y no lo entenderé todo en una sola explicación.
Cholthi Paul Ttiopic
Tal vez debería hacer esa pregunta específicamente en una nueva pregunta. Pero como un conjunto de herramientas de widgets como Qt y GTK + hacen mucho de su propio renderizado y usarán la GPU para la aceleración antes de pasar una referencia del contenido renderizado a las bibliotecas de sistemas operados y al servidor de visualización como búfer en muchos casos. Pueden mutar un widget que el sistema operativo hace parcialmente. La mayoría de los kits de herramientas no utilizan los widgets de X directamente porque cada propiedad debe actualizarse con mensajes para reposicionar cualquier widget, pero los widgets se pueden mover en relación con sus padres, etc.
jdwolf

Respuestas:

2

Las coordenadas del botón, las dimensiones del botón y las coordenadas del puntero del mouse se almacenan en la memoria. Cuando el usuario presiona un botón del mouse, el sistema operativo compara la posición del puntero del mouse con las posiciones de los controles de UI y determina la acción apropiada.

Los estándares de visualización y el dibujo no están relacionados, es una operación puramente matemática.

gronostaj
fuente
cerca de la imagen mental que tenía
Cholthi Paul Ttiopic
1

Tiene coordenadas de pantalla y "Windows" (Rectángulos), por lo que siempre puede averiguar qué objeto "posee" el píxel en el que se encuentra actualmente el puntero, solo iterar recursivamente a través de las estructuras para verificar.

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

Las ventanas pueden ser jerárquicas y en cascada. P.ej. Los Elementos GUI no son más que subventanas en este contexto. El sistema operativo se iniciará desde una raíz (que tiene una lista de todas las ventanas de "nivel de raíz") y, por lo tanto, podrá hacer coincidir la posición del mouse con todos los rectángulos. Luego verifica si el rectángulo está en primer plano / tiene enfoque, etc. Luego repite las mismas verificaciones con "Windows" (elementos de GUI) dentro de esa ventana. Finalmente, solo llama a la función del controlador de eventos asociada con el elemento de GUI de nivel más bajo.

T Nierath
fuente