|
|
1
10
WindowsVista/7和OSX都使用合成引擎在屏幕上绘制光栅化位图。这些合成引擎负责处理所有窗口的输出并绘制最终屏幕图像。这种合成方法是OSX如何在最小化到船坞时使用精灵效果,以及Aero如何绘制半透明边界。它们还可以防止闪烁,就好像填充屏幕特定区域的位图不可用一样,它将使用已经存在的图像,而不是绘制空白区域。 OSX自首次发货以来就有一个合成引擎。当时,很多人认为这是一个疯狂的Appraoch,因为当时所有的视频卡都被优化为绘制位图(即,Windows按钮和边框),而不是合成图像。在后来的OSX版本中,合成被推到GPU(在Quartz-Extreme中),因此从CPU上卸下了大量的负载,并使更多的效果成为可能。 因为Windows Compositer只在Windows Vista中添加,并且只有在有可用的GPU并且您拥有正确版本的操作系统时才添加,所以它不像OSX中的Quartz Compositer那样普及。因为合成器并不总是在窗口中使用,所以当一个区域被清空,并且负责绘图的应用程序无法足够地重新绘制该区域时,就会发生闪烁。 |
|
|
2
16
Mac OS X double buffered windows . 你不必做任何事来实现它。在幕后。 你(几乎总是)没有明确地在Cocoa中绘制一个窗口,当某些东西发生变化时,你会使窗口的某个区域失效。框架稍后将下降视图的层次结构,并将窗口的脏区域绘制到辅助缓冲区中。然后它交换缓冲区。 您可以选择做出一些承诺,允许框架在重新绘制时走捷径,但它们都是可选的。只有精明的观点才会受到影响。
如果nsview的子类实现了
实施
10.6添加了另外两个此类新API,
最后,自定义绘图不如在窗口上常见。您看到的大多数视图都是框架提供的,而不是子类的。框架提供的手段由苹果优化。 |
|
|
3
1
是的,都是自动双缓冲的。当然,如果你在跑步 Mac OS 9的遗留代码,或者从windoze移植的代码,这意味着你是 可能是三重缓冲而不知道。嘿,自行车很便宜! |
|
|
FranticFronk · Tkinter单选按钮在已选择时执行命令 1 年前 |
|
|
Kumkuatte · 如何将UI元素对齐到Unity中的左侧位置 2 年前 |
|
|
Calax · GUI不显示所有组件(C++) 2 年前 |
|
|
trassert · python flet容器 2 年前 |
|
|
zadisk8 · 带有Q拆分器和多级选项卡的PyQt5 2 年前 |
|
|
Patrick Visi · Zitadel日常创建服务用户 2 年前 |