位图显示和图形界面技术(操作系统桌面显示技术)

 位图显示和图形界面技术(操作系统桌面显示技术),GUI;
 位图显示技术,开始于施乐PARC,创新于MAC(苹果),发展于Windows(微软);  
> 矢量图
  矢量图用数学公式对物体进行描述以建立图像。在矢量图形中,把一些形状简单的物体如点、直线、曲线、圆、多边形、球体、立方体、矢量字体等称作图元,再用这些简单的图元来构成复杂的图形。
  矢量图形最基本的特点是充分利用了输出设备的分辨率,能获得高精度的打印输出;矢量图形信息量少,因而文件较小,能快速打印和屏幕显示;具有高度的可编辑性;与位图相比,矢量图形缺乏真实感;矢量图形能够表示三维物体并生成不同的视图,而在位图图像中,三维信息已经丢失,难以生成不同的视图。

>  DOS应用程序的Windows位图显示技术
 Windows已经把位图技术深入运用在系统的各个方面。比如在Windows中,你在记事本,写子板里打出来的字实际上是利用位画原理"画"出来的。许多Windows可执行程序有美丽的图标,其实它是将位图技术嵌入可执行文件EXE中。图标也是利用位图原理构造的,微软的最新的操作系统WindowsXP对位图的运用更是精妙绝伦

> 使用Java显示图片
java方面图形/图像处理- http://blog.csdn.net/it_man/article/details/7606218
https://www.oschina.net/p/javaimagefilters ; http://www.oschina.net/p/easyimage

> android位图
-- 位图图像
ALPHA_8:数字为8,            图形参数应该由一个字节来表示,应该是一种8位的位图
ARGB_4444:4+4+4+4=16,图形的参数应该由两个字节来表示,应该是一种16位的位图.
ARGB_8888:8+8+8+8=32,图形的参数应该由四个字节来表示,应该是一种32位的位图.
RGB_565:5+6+5=16,         图形的参数应该由两个字节来表示,应该是一种16位的位图.

  位图可以看作是在一个栅格网上的图案,即“点阵”图。位图的宽高比是以宽度和高度中的像素数目作度量的,例如:800×600、1024×768等。为了能知道一个位图的实际大小,一般是记录位图图像的分辨率。所谓分辨率是指在给定单位长度上的像素数目,通常使用每英寸作为度量单位。位图图像具有真实感强、可以进行像素编辑、打印效果好、位图文件大、分辨率有限等特点。
  像素是位图图像的基本构成元素。在位图中,每一个小“方块”中被填充成颜色时,它就能表达出图像信息,其中每一个小“方块”称为像素。
  在一个计算机系统中,表示一幅图像的一个像素的颜色所使用的二进制位数就叫做颜色深度

-- 位图
 图像编解码都是很复杂的算法.
 硬件加速绘制,实际上是GPU绘制的情况下,需要先把位图上传到GPU形成纹理,再基于纹理采样,渲染到图形内存上。 
 android位图(android.graphics.Bitmap),Android中是以Skia主导解码的过程.绝大部分Android设备的硬解码和硬编码都用于自家的应用(比如拍照),对第三方应用开放的只有软件编解码。 
Android 位图显示及位图模式的一些总结,此博文包含图片- http://blog.sina.com.cn/s/blog_821e2bb10101opy8.html 

-- 显示位图整个过程可分为三步: 
第一步,得到位图(Bitmap)的内存数据,即从相应的图片文件解码,得到数据放并放到内存。 
第二步,使用某种2D引擎,将位图内存按一定方式,渲染到可用于显示的图形内存(GraphicBuffer)上。 
第三步,由一个中心显示控制器(Surfaceflinger),将相应的图形内存投放到显示屏(LCD)。

-- Android相关GDI的源码文件:
 frameworks/base/core/jni/android_view_Surface.cpp
 frameworks/base/core/java/android/view/surface.java
 frameworks/base/graphics
 frameworks/base/libs/ui
 frameworks/base/libs/surfaceflinger_client
 external/skia

 Surface的合成一般有两种方式,一种采用硬件的方式来合成,叫覆盖合成,另一种是采用软件的方式,这就是SurfaceFlinger合成。
 Android 提供了 4 种类型的 layer 供选择,每个 layer 对应一种类型的窗口,并对应这种窗口相应的操作: norm layer, LayerBlur , LayerBuffer ,LayerDim。
 Norm Layer 是 Android 种使用最多的一种 Layer ,一般的应用程序在创建surface 的时候都是采用的这样的 layer ,了解 Normal Layer 可以让我们知道Android 进行 display 过程中的一些基础原理。 Normal Layer 为每个 Surface分配两个 buffer : front buffer 和 back buffer ,这个前后是相对的概念,他们是可以进行 Flip 的。 Front buffer 用于 SurfaceFlinger 进行显示,而 Back buffer 用于应用程序进行画图,当 Back buffer 填满数据 (dirty) 以后,就会 flip , back buffer 就变成了 front buffer 用于显示,而 front buffer就变成了 back buffer 用来画图,这两个 buffer 的大小是根据 surface 的大小格式动态变化的。两个 buffer flip 的方式是 Android display 中的一个重要实现方式,实现了双缓冲的模式,不只是每个 Surface 这么实现,最后写入 FB 的main surface 也是采用的这种方式。Surface 创建以后,应用程序就可以在 buffer 中画图了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值