delphi – 为什么默认情况下禁用DoubleBuffered?

创建新表单后,我通常执行这个仪式:

>将名称更改为有意义的名称;
>键入字幕;
>更改position属性(DefaultPosOnly几乎没有什么用户期望);
>将ShowHint设置为true;
>将DoubleBuffered设置为true;

我一直想知道为什么认值是’False’。对我来说,它只是看起来低技术和肮脏,在我的新机器我没有注意到性能的任何差异。

在旧机器,VNC,远程桌面或虚拟机可能是doublebuffering问题吗?

你把它关闭还是关闭?任何建议?

解决方法

您可能知道,双缓冲区通常涉及创建一个与可视组件大小相同的屏幕内存缓冲区。在这个缓冲区上执行写入/绘图,当完成时,整个缓冲区被“交换”,使得它现在被绘制在可视组件上。

(注意:“交换”可以包括简单地改变指针指向的地址,或者实际上可能涉及复制一块存储器,例如使用BitBlt,memcpy等)

因此,为启用它的每个组件分配一个合理的内存量来支持这个过程。如果您的应用程序有许多窗口和/或组件,将会分配不大量的内存。如果你不需要平滑的视觉更新/滚动,为什么浪费这个内存?

当然还有一个论点,今天大多数电脑都有足够的内存,所以为什么要担心。但是,我仍然不认为这是认启用双缓冲的原因,如果你不需要它。

如果手动将DoubleBuffered设置为true对您来说很痛苦,您可以始终创建自己的从内置控件继承的自定义控件/组件,并将DoubleBuffered(和其他属性)设置为所需的认值。

相关文章

 从网上看到《Delphi API HOOK完全说明》这篇文章,基本上都...
  从网上看到《Delphi API HOOK完全说明》这篇文章,基本上...
ffmpeg 是一套强大的开源的多媒体库 一般都是用 c/c+&#x...
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和ED...
1 mov dst, src dst是目的操作数,src是源操作数,指令实现的...