GUI是如何真正制作的?

Posted

技术标签:

【中文标题】GUI是如何真正制作的?【英文标题】:How are GUI's really made? 【发布时间】:2013-06-04 20:02:59 【问题描述】:

我的问题是 像 Qt 这样的 Gui 库,可以说用于 Windows 操作系统 他们如何创建所有这些图形用户界面(Windows 等)。

是否每个操作系统都提供 API 或其他东西来这样做?如果是,那么操作系统如何绘制所有这些窗口和东西。它们(操作系统)是否“控制”屏幕,然后逐个绘制每个像素以GUI 达到目的了吗?

我想要一个可以在最低级别解释事情的答案,但是我不要求有人写下发生的所有事情(即使我愿意),因为我知道所有这些背后都有很多事情。所以这就是为什么有链接或建议的书籍来解释详细信息 我们将不胜感激。

【问题讨论】:

一个相当好的问题,但恐怕不能真正回答。是的,当涉及到与硬件的交互时,操作系统几乎可以“控制”一切。 【参考方案1】:

*** 答案不应该使用链接,cmets 可以但不能回答。

每个操作系统和 gui 库都是不同的,但是,是的,在某种程度上,它们确实绘制了每个像素的形状或形式。它通常非常有条理,并且使用了许多性能解决方案,可以更新矩形或屏幕的某些块的优化例程,有时会涉及到硬件(这些天很多时候硬件或基本上是 gpu 参与 cpu 询问 gpu绘制一些东西,然后 gpus 正忙于放置所有像素)。

例如,您可能希望创建某种字体渲染函数,该函数给出了字体、要显示的字符串、字体大小,可能还有一个不向外的剪切窗口,或者可能是一个带有字体的函数, size 和 string 返回像素数,然后您可以调整字符串以适应和换行(例如,环顾此网页,将窗口拖得更宽和更窄,观察网页文本的作用)。

绝对是某种图像绘制例程,能够将绘图拉伸或适合定义的矩形。

随着时间的推移,有趣的东西、游戏等得到了如此迅速的改进,以至于很难回到简单的线条绘制和区域填充例程等。而且随着技术的发展,游戏带来了简单的东西,比如网页受益...再次环顾四周。

有许多开源程序和库,您应该在源代码中四处逛逛,看看您所看到的。

【讨论】:

感谢您的回答。至于答案中的链接,我有一个错误的印象,认为没关系,因为我在其他问题的答案中看到了链接。 我看到人们使用链接并且有人说不要使用链接,我不知道这是否是书面规则,但这是有道理的,因为本网站上的答案/文本比许多链接更持久。如果信息是在链接中而不是在本网站上并且链接是错误的,那么问题和答案就会变得毫无用处。问题应该在这里而不是链接中,答案应该在这里而不是链接中,以便对读者有用。 不鼓励仅链接的答案,您可以使用它们,只要您解释和详细说明甚至引用,此内容取自。此外,并非所有链接都是永久性的,因此您的解决方案必须包含内容。【参考方案2】:

操作系统提供与监视器/显示器接口的库。简而言之,诸如 Qt 之类的 GUI 库与操作系统的这些库进行交互,并为您(程序员)与监视器交互创建了一个更容易的桥梁。例如,Qt 可能有一个 drawLine 特性,它在下面负责处理与在操作系统的监视器/显示器上绘图相关的像素排列。

【讨论】:

谢谢。您的回答让我确信我自己就事情可能如何运作做出了一些基本结论。

以上是关于GUI是如何真正制作的?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用matlab制作GUI界面

matlab GUI 如何制作选项卡?

如何只用一行 Python 代码制作一个GUI(图形界面)?

如何使用matlab制作GUI界面

如何从用python制作的gui连接到mysql数据库

MVVM:GUI 和 ViewModel 之间的真正分离