十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
默认是缇,1英寸=1440缇
成都创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、成都网站建设、三门峡网络推广、重庆小程序开发、三门峡网络营销、三门峡企业策划、三门峡品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联公司为所有大学生创业者提供三门峡建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com
若想转换为Pixel的话
例:
Option Explicit
Private Sub Form_Load()
MsgBox "缇宽度:" Form1.Width
Dim lPixel As Long
lPixel = Form1.Width / Screen.TwipsPerPixelX
MsgBox "Pixel宽度:" lPixel
End Sub
不同环境的默认计量单位:VB中是缇,VBA中是磅,API中是像素。
这些计量单位的换算是:1缇=1/20磅,1磅=4/3像素,而1缇=1/15像素。
;replyid=133063id=122736page=1skin=0Star=2
缇的定义是1缇=1/20点(point)
点的定义是1点=1/72逻辑英寸
正常尺寸(96DPI)下:1英寸=96像素(可以在桌面上点右键,从”属性-设置-高级-常规-DPI设置”中看到)
如果在大尺寸(120DPI)下,1英寸=120像素
由此可以得到,在正常尺寸下:
a)
1像素=1/96逻辑英寸=0.75(72/96)点=15(20*0.75)缇
在大尺寸(120DPI)下
b)
1像素=1/120逻辑英寸=0.6点=12缇
无须API,VB本身的功能就能完成:
Private Sub Form_Click() '点击窗体运行
Dim dpi_x As Single, dpi_y As Single, px_twip As Single
dpi_x = Me.ScaleX(Screen.Width, 1, 3) / Me.ScaleX(Screen.Width, 1, 5)
dpi_y = Me.ScaleY(Screen.Height, 1, 3) / Me.ScaleY(Screen.Height, 1, 5)
px_twip = Me.ScaleX(1, 3, 1)
Print "DPI_X = " dpi_x
Print "DPI_Y = " dpi_y
Print "1像素 = " px_twip "缇"
End Sub
保存前加一句 myImage2.SetResolution(300, 300) 你设置的bMape不是保存的主画布 所以无效,设置分辨率就是 SetResolution(X,Y)
Screen.Height / Screen.TwipsPerPixelX ---这是把屏幕的绝对高度单位由缇转为像素
(Screen.Height / Screen.TwipsPerPixelX) - rectVal.Bottom ---这是把屏幕高度减去工作区高度(计算结果就是任务栏的高度了,单位为像素)
((Screen.Height / Screen.TwipsPerPixelX) - rectVal.Bottom) * Screen.TwipsPerPixelX ---这是把上述计算结果的单位由像素转为VB默认的缇
补充说明:此语句存在下属错误或缺陷:
1、任务栏并不是固定在屏幕下方的,也可以是上边、左边或右边的(尽管很少有人这么做),如果出现后面这些情况,那么程序的计算结果就是不准确的;
2、计算工作区的高度(或宽度)时,要把Bottom-Top(或Right-Left),因为Top(或Left)是不一定为0的(见上述1);
3、Screen.TwipsPerPixelX用错了,应该是Screen.TwipsPerPixelY,前者是屏幕横向每像素多少缇,是用来转换屏幕宽度单位的,后者则是屏幕纵向每像素多少缇,这才是用来转换屏幕高度单位的。不过在绝大部分情况下,这两个值是相等的(都是15),所以程序运行结果不会出错,但是作为程序必须严谨,因为说不定你的程序要运行在一些特殊的屏幕上呢(这时候两个值就不一定相等了)?