首页 > 解决方案 > 用 C++、C#、Java 等编写的桌面 GUI(图形用户界面)是否像所有 Web 或移动 GUI 一样使用 DOM 或类似概念?

问题描述

深入理解和使用文档对象模型 (DOM) 的概念来为 Web 和移动应用程序创建各种 GUI 是非常普遍的。不过,我想知道,桌面、嵌入式系统、其他电子设备等(使用 C++、C#、Java、Python 等编程)的 GUI 是否使用 DOM 的这个概念或一些类似的带有 API 的“对象模型”(应用程序编程接口) 为了在屏幕上“呈现和显示”视觉和图形内容?

标签: javac#c++user-interfacedom

解决方案


有很多疯狂的方法可以做到这一点。图形操作系统通常提供一个或多个小部件工具包,其中可以包括配置文件、绑定引擎或只是用于创建各种小部件的 API。窗口系统的行为有点像浏览器环境。

在图形游戏和其他较少受操作系统约束的应用程序中,您通常会在 GPU 加速表面上编写自己的小部件工具包,或者使用为您编写的图形工具包。推出多款游戏或类似游戏的公司将拥有一个代码库,使他们的游戏 UI 风格更容易站起来。这更接近于推动像素;但是,如果您想要良好的性能和良好的过渡,实际上您通常会将几何图形推送到 GPU 代码,而不是像素。

在 CPU 上的 4k 显示器上以 60 fps 的平滑过渡动画是不切实际的;很快做GPU很容易。因此,不能轻松与 GPU 交互的语言通常最终会由中间库或框架为它们做这件事。

其他程序实际上将具有嵌入式 chrome 引擎并喷出 HTML 并将回调绑定到其中。

如果您的 UI 更加静态,则从 CPU 推送像素是可行的。即便如此,内容通常最终还是被操作系统/窗口框架复制到 GPU 上,因此抓取整个窗口并四处移动它既流畅又便宜。


推荐阅读