我试图了解Linux GUI堆栈的工作原理。让我解释一下:
在Windows中,thigs相对简单。你有GDI / GDI +。它处理从windows绘图和positiong到绘图按钮等的所有后续操作,对吗?
但在Linux中我感到非常困惑。如果我解释一下自己的想法,也许你会更好地理解我的困惑来自哪里。所以,首先是Linux,我读到了它的桌面管理器。 Gnome和KDE。所以我选择了KDE(没有特殊原因)并且学会了它使用Qt库。所以我更多地阅读了Qt库。
我首先想到Qt实际上呈现了UI元素,如按钮,滑块等。但是,当我从多平台看到Windows的示例时,我意识到它没有。它使用GDI进行渲染。所以Linux版本必须使用一些Linux方式来呈现UI元素。
所以,如果我是对的,KDE只使用Qt来组织事情,我会以非常简单的方式说布局管理器,对吧?我假设这一点,如果在Windows上它使用GDI进行渲染,它的广泛使用只是因为它更简单,更清晰,然后直接操作GDI。
所以从这个角度来看,Linux桌面(实际上也是Windows)只是一个窗口,它始终是全屏的,无法最小化,关闭等等。它使用Qt来渲染更高级别的基本UI元素。但这意味着Qt库下还有另一个更深层次的层。我读到了X系统及其窗口管理器。 X窗口管理器是否是呈现UI元素的图层(按钮等)?如果我是对的,那么X系统就是“只是”上层和PC的图形子系统之间的图形界面。像GDI这样的东西使用DirectDraw来访问帧缓冲等......
在Windows中,整个堆栈看起来更紧凑,我并不是说它更好,因为GDI似乎是Window管理器和UI元素渲染器的角色。我相信这就是为Linux开发高级UI界面(Compiz ...)的原因。
那么,拜托,我哪里错了?我试图尽可能地理解它,但我仍然认为我错过了一些东西。感谢。