操作系统如何跟踪显示器上物体的位置?

操作系统如何跟踪显示器上物体的位置?

我知道使用 VGA 等标准的显示器至少在操作系统看来可以视为像素矩阵。但现代显示器包括按钮和文本框等复杂的 UI 控件。
我不知道操作系统是否完成了所有工作,还是开箱即用的鼠标技术提供了这些功能。

现在的问题是,操作系统如何跟踪这些控件的位置以便以编程方式进行控制。

答案1

按钮坐标、按钮尺寸和鼠标指针坐标都存储在内存中。当用户按下鼠标按钮时,操作系统会将鼠标指针的位置与 UI 控件的位置进行比较,并确定适当的操作。

显示标准和绘图无关,它是一种纯粹的数学运算。

答案2

您有屏幕坐标和“窗口”(矩形),因此您总是可以找出哪个对象“拥有”您的指针当前所在的像素,只需递归地遍历结构进行检查即可。

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

窗口可以是分层和级联的。例如,在这种情况下,GUI 元素只不过是子窗口。操作系统将从根(其中包含所有“根级”窗口的列表)开始,因此能够将鼠标位置与所有矩形进行匹配。然后检查矩形是否在前台/是否具有焦点等。然后,它会对该窗口内的“窗口”(GUI 元素)重复相同的检查。最终,它只调用与最低级别 GUI 元素关联的事件处理程序函数。

相关内容