屏幕分辩率与FrameSize、WinSize、VisibleSize、VisibleOrigin概念理解

来源:互联网 发布:网络链路测试工具 编辑:程序博客网 时间:2024/04/29 18:23

         分辨率是屏幕图像的精密度,是指显示器所能显示的像素的多少。由于屏幕上的点、线和面都是由像素组成的,显示器可显示的像素越多,画面就越精细,同样的屏幕区域内能显示的信息也越多,所以分辨率是个非常重要的性能指标之一。可以把整个图像想象成是一个大型的棋盘,而分辨率的表示方式就是所有经线和纬线交叉点的数目。

显示分辨率,是指单位长度内包含的像素点的数量,它的单位通常为像素/英寸(ppi)。以分辨率为1024×768的屏幕来说,(即每一条水平线上包含有1024个像素点,共有768条线),即扫描列数为1024列,行数为768行。

分辨率决定了位图图像细节的精细程度。
通常情况下,图像的分辨率越高,所包含的像素就越多,图像就越清晰,印刷的质量也就越好。同时,它也会增加文件占用的存储空间。


FrameSize就是屏幕的实际分辨率,这是不变的,比如我用的盖世三的手机分辨率为1280x720,这就是盖世三的FrameSize。

                    注意这个FrameSize很容易理解成屏幕的长宽多少,其实不是,分辨率和实际的长宽没有必然联系。

                   比如:

                            盖世3的尺寸(长宽)为4.8寸,分辨率为1280x720

                            盖世4的尺寸(长宽)为4.99寸,分辨率为1920x1080

                 所以在设计游戏时,只考虑屏幕的分辨率即可,不用考虑屏幕的实际长宽。

WinSize就是设计分辨率,相当于游戏设计的逻辑大小,可以这样理解,上面的FrameSize就是画框,这里的WinSize就是画布。

VisibleSize就是画布显示在画框中的部分,注意:它的大小是用WinSize来表示的。

VisibleOrigin就是VisibleSize在画框中的左下角坐标点,注意也是用WinSize来表示的。

比如:

FrameSize:假设为width = 720, height = 420

WinSize:假设为width = 360, height = 240

在kResolutionNoBorder模式下,实例图像如下:


此时的VisibleSize就是HIKJ,此时的VisibleSize为Width = 360, height = 210。

因为FrameSize的长宽比为 720 :420 = 360 :210,而我们的设计分辨率为 360 :240,所以在kResolutionNoBorder模式下,被画框截下来的设计分辨率

就为360:210

此时的VisibleOrigin就是在VisibleSize中的K,坐标为(0,15),右图中可以看出 15 = (240-210)/2

自我总结:

其实设计分辨率(WinSize)就是程序里面的逻辑画布大小,是我们需要去关注的东西,我们所有的绘图元素都是放在逻辑大小的画布上的。

至于设计分辨率显示到屏幕分辨率(FrameSize),是通过程序给我们的几种模式(kResolutionExactFit,kResolutionNoBorder,kResolutionShowAll,kResolutionFixedHeight,kResolutionFixedWidth)让我们去适配的,去决定画布的那些部分需要显示在画框中(手机屏幕)上。


0 0
原创粉丝点击