GUI的制作过程是什么?

5
我的问题是,像Qt这样的GUI库以及用于Windows操作系统的GUI库 它们如何创建所有这些图形用户界面(窗口等)?
每个操作系统是否提供API或其他东西来实现这一点?如果是的话,那么操作系统如何绘制所有这些窗口和物体?他们(操作系统)是否“控制”屏幕,然后逐个绘制每个像素以实现他们的目标GUI?
我希望得到一个尽可能低层次的解释,但我并不要求有人为我写下每个细节(即使我想要)。因为我知道所有这些背后都有很多东西。因此,评论中带有链接或建议书籍的解释,这些书籍详细说明了发生在引擎盖下的事情,将不胜感激。

这是一个相当好的问题,但恐怕无法真正回答。是的,当涉及与硬件交互时,操作系统几乎控制着所有东西。 - Daniel Kamil Kozar
2个回答

1

Stackoverflow的答案不应该使用链接,但评论可以使用。

每个操作系统和GUI库都是不同的,但它们确实以某种方式、形状或形式绘制每一个像素。通常情况下非常有组织,并且使用了许多性能解决方案,优化例程可以更新屏幕的矩形或某些块,有时硬件会介入(现在很多时候硬件或基本上GPU介入,CPU要求GPU绘制某些内容,然后GPU忙于放置所有像素)。

例如,您可能想要创建一些字体渲染函数,该函数给出字体、要显示的字符串、字体大小以及可能不超出的剪辑窗口,或者通过字体、大小和字符串返回像素数,然后您可以调整字符串以适合并换行(例如,查看此网页,拖动窗口使其变窄或变宽,观察Web文本的行为)。

肯定需要一些图像绘制例程,具有将绘制拉伸或适应定义矩形的能力。

有趣的东西,游戏等等,随着时间的推移而得到了快速改进,以至于很难回到简单的线条绘制和区域填充例程等。但是,随着技术的发展,游戏带来了像网页这样的简单事物的好处...再次四处看看。

有许多开源程序和库,你应该漫游源代码并看看你所看到的。


感谢您的回答。至于答案中的链接,我曾经错误地认为这是可以的,因为我在其他问题的答案中看到了链接。 - Lan Pac
我见过有人使用链接,也听到有人说不要使用链接,我不知道这是否是一条书面规定,但如果答案/文本在此网站上存在时间比许多链接更长,那么这是有道理的。如果信息在链接中而不在此网站上,并且链接失效,则问题和答案将变得无用。问题应该在此处,而不是在链接中,答案也应该在此处,而不是在链接中,以便对读者有用。 - old_timer
不鼓励仅提供链接的答案,您可以使用它们,只要您解释、阐述甚至引用,并且这段内容来自于 <link>。此外,并非所有链接都是永久的,因此您的解决方案必须具有内容。 - zardilior

1
操作系统提供了与显示器交互的库。简言之,GUI库(如Qt)与操作系统的这些库进行交互,并为程序员创建了一个更容易的桥梁来与显示器交互。例如,Qt可能具有drawLine功能,其底层正在处理与在操作系统上绘制相关的像素排列。

谢谢。你的回答让我确认了一些基本结论,这些结论是我自己得出的,关于事物可能如何工作。 - Lan Pac

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接