Screen.TwipsPerPixelX

来源:互联网 发布:21天学通java 买第几版 编辑:程序博客网 时间:2024/06/05 08:22

    最近敲VB时遇到了一些小问题,比如实例93中的代码,Me .Width \ Screen.TwipsPerPixelX  和  Me.Height \ TwipsPerPixelY 是什么意思呢?还没有注释。

           原来Screen.TwipsPerPixelX表示横坐标中每像素有多少缇,Me.Width \ Screen.TwipsPerPixelX就是得到窗体的像素宽度,同理Me.Height \ TwipsPerPixelY的意思也就知道了。

            缇:缇是一个绝对长度单位。一厘米等于 567 缇。缇是与屏幕无关的度量单位。   

           像素:是一个相对的单位,它和显示器的分辨率有关系。           

           可以这样来理解:我们电脑的显示器的物理尺寸是一定的,可是我们可以通过设置来选择不同的分辨率,比如1024*768,就说明在我们的显示器上显示1024*768个像素。如果换一种分辨率呢?很显然,同一个显示器上所显示的像素值就不一样了。也就是说像素的大小和物理长度的对应关系是一个相对值,这个比值就是由分辨率来决定的。经过上面的概念对比,我们可以很清楚的知道缇和像素是没有固定的对应关系的。

          那么缇和像素怎么转换呢?这和DPI是有关系的。

   DPI设置为96时(系统默认值),1个像素=(1/96)*1440=15 Twips;当DPI设置为120时,1个像素=(1/120)*1440=12 Twips。当DPI为96时,如果希望窗体的高是「400」像素,宽是「300」像素,属性的设定值就是: Height=400×15=6000 Twips,Width = 300 × 15 = 4500 Twips.

   二、在窗体中直接加载的一个图片(用picture 属性,不用控件),大小不能铺满整个屏幕,我想让它铺满整个屏幕。

   窗体的AutoRedraw属性设置为True,用下面的代码就行了。

   Private Sub Form_Resize()

      Me.PaintPicture Me.Picture, 0, 0, Me.ScaleWidth, Me.ScaleHeight

   End Sub

 

原创粉丝点击