图形化界面的软件为了避免闪烁,改善用户体验,很多采用双缓冲,首先在内存中建立一个图片对象,然后在这个图片上绘制用户界面,当所有的内容绘制完毕后,一下子讲该图片绘制到计算机屏幕上。这样能大大加快在屏幕上的绘制界面的速度,避免闪烁。

以后计算机软硬件的发展,浏览器可不可以对其内容也进行类似的双缓冲处理,浏览器在加载新的页面时,仍然维护显示旧的页面,旧页面仍然显示,可以滚动,但不处理脚本和界面事件。浏览器在后台加载新页面,并在内存中绘制新页面的样式,处理新页面的初始化脚本,当页面及其关联的内容加载完毕,将内存中维护的页面迅速的替换掉旧的页面视图,这样可以很大程度的避免由于刷新而带来的闪烁。

此时浏览器在加载新页面时会维护两个页面,一个是显示在计算机屏幕上的旧页面的视图,另一个是维护在内存中的不断构造的新页面。当新页面加载完毕后浏览器就会抛弃旧页面而快速的显示已经加载的新的页面。

浏览器可以开放接口,页面脚本可以设置浏览器是否采用这种加载模式,也可以让浏览器不必等到全部加载完毕就可以切换页面,可以设置页面的切换样式,比如直接切换,渐变,或者像Flash的图形渐变动画效果等等。如此这样比现在的加载模式要慢,但可以减少闪烁,而且未来计算机硬件和网络的高速可以弥补这种慢速。

以上是在下呓语。

袁永福 ( http://www.xdesigner.cn ) 2006-11-27

转载于:https://www.cnblogs.com/xdesigner/archive/2006/11/27/573534.html

浏览器内容双缓冲的设想相关推荐

  1. Android中实现双缓冲(画板应用)和XML文件定义菜单

    1.什么是双缓冲技术?双缓冲技术就是当用户操作界面完成后,会有一个缓冲区保存用户操作的结果. 为什么要使用双缓冲技术?拿Android 游戏开发来说,界面贞每次都是全部重画的,也就说画了新的,旧的就没 ...

  2. 双缓冲法解决重绘和闪屏问题

    重绘导致原因:UpdateData.Invalidate.InvalidateRect和UpdateWindow函数. 1. UpdateData重绘控件函数 UpdateData(TRUE)--刷新 ...

  3. OpenGL编程指南4:双缓冲实现运行

    1.前言 绘制一个旋转的方块,主要为了说明glutSwapBuffers()函数的用法. 同时也为了学习如何使用GLUT控制输入设备,并打开或关闭空闲处理函数. 2.OpenGL编程及程序剖析 /** ...

  4. 【Qt】2D绘图之双缓冲绘图

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 绘制矩形 04. 双缓冲绘图 05. 附录 01. 概述 所谓的双缓冲绘图的概念.双缓冲(double-buffers)绘 ...

  5. [Qt教程] 第18篇 2D绘图(八)双缓冲绘图

    [Qt教程] 第18篇 2D绘图(八)双缓冲绘图 楼主  发表于 2013-5-2 22:07:23 | 查看: 789| 回复: 1 双缓冲绘图 版权声明 该文章原创于Qter开源社区(www.qt ...

  6. c#双缓冲绘图(不闪烁的几种方法)

    C#绘图双缓冲 C#双缓冲解释: 简单说就是当我们在进行画图操作时,系统并不是直接把内容呈现到屏幕上,而是先在内存中保存,然后一次性把结果输出来,如果没用双缓冲的话,你会发现在画图过程中屏幕会闪的很厉 ...

  7. MFC VC 双缓冲绘图基本原理与实现,详细解释

    MFC做了一些时间了,不得不面对 的是在界面上画图的. 当然你可以直接搜索到能用的代码,并且基本能满足要求.不过这样总不是学习的态度.本着学习分享的态度,现做一些基本的分析吧. 在MSDN上知道,我们 ...

  8. [Winodows图形编程]初识双缓冲技术

    2019独角兽企业重金招聘Python工程师标准>>> 为完成PaintBoardDemo(本人设计的一个基于.NET Framework的WinForm的画图程序),过程中遇到的技 ...

  9. 控制台双缓冲防闪烁--功能封装

    使用时,将包括#define DATALEN 10000的语句以及整个类.全局变量scrbuf的定义都拷贝到你的代码文件中. 默认不开启双缓冲. 调用scrbuf.on()开始双缓冲模式 此模式下,输 ...

最新文章

  1. 语文教学中如何运用计算机辅助教学,计算机辅助教学在语文教学过程中的运用...
  2. 前端:JS中JSON对象和String转换
  3. FireDAC 报系统找不到指定的文件错误,解决之道。
  4. BCB 串口控件的使用 TComm
  5. ExtJs2.0学习系列(13)--Ext.TreePanel之第二式
  6. java Swing实现考试系统
  7. 食饵捕食者模matlab,数学建模经典基于MATLAB的三种群食饵_捕食者模型数值解
  8. 计算机建筑制图实践报告,工程建筑实习报告范文(精选5篇)
  9. WhatsApp对话生成器使用教程
  10. 解决Word多级列表章标题第一章与节标题1.1排序混乱问题
  11. Cloudera Manager 配置
  12. CentOS7-1810 系统DNS服务器BIND软件配置说明
  13. JavaScript里的 深浅拷贝
  14. C#中的Obsolete
  15. 「星火计划沙龙视频」腾讯自研图数据库核心研发思路揭秘
  16. 使用 ktra 搭建私人 Cargo registry
  17. H3C模拟器 用户名包含非ASCII字符启动失败 解决方案/windows中文用户名修改
  18. API文档工具knife4j使用详解
  19. php统计结果,使用php怎么统计问卷调查结果
  20. 如何将英文文献转中文?

热门文章

  1. html ajax输出表格中,使用Ajax来渲染HTML表格
  2. android bitmap 加边框,Android 给圆角的Bitmap加边框
  3. micropython 驱动oled0.91_[MicroPython]STM32F407开发板驱动OLED液晶屏
  4. oracle二进制转换字母,如何将oracle二进制数据转换为word文本
  5. 新人学习web前端必须要知道的基础知识,让你轻松入门
  6. java刚进公司做什么?
  7. CSS垂直居中,你会多少种写法?
  8. 如何学好前端,这5点你一定要知道!
  9. 高级点的php书,深入理解php:高级技巧、面向对象与核心技术(原书第3版) 中文pdf扫描版[76MB]...
  10. Linux权限z代表什么,linux用户与权限使用方法