亲爱的,我想将我的像素转换为点大小,在我的项目中,当用户调整文本图像大小时,应该根据宽度使用点大小重新调整大小?
任何人都有任何想法?
答案 0 :(得分:3)
1像素= 0.264583333毫米,
1 mm = 3.779527559像素
根据translatorscafe.com
但实际上Pixel是一种相对测量,取决于您的屏幕分辨率。
您无法将相对测量值正确转换为固定测量值,您只能近似它。并且近似的正确性取决于您的假设的准确程度,在这种情况下假设为1像素= 0.264583333 mm
假设我的情况例如: 我的分辨率为1920 x 1080像素(根据Windows显示设置)。 然后我的笔记本电脑上有一个18英寸的显示器。 这意味着18英寸的对角线,因为1英寸是25.4毫米(根据谷歌),这使得对角线457.2毫米(根据calc.exe)。 此外,假设像素相对于mm的长度与宽度相等,这意味着监视器的亮度是1080/1920倍。 使用毕达哥拉定理a ^ 2 + b ^ 2 = c ^ 2 = 457.2 ^ 2 mm ^ 2 和a是x和b是1080/1920 x我们有 (x)^ 2 +(1080/1920 x)^ 2 = 457.2 ^ 2 mm ^ 2 求解x的结果为398.4843356 mm(根据Casio Classpad 300)
因此,如果我的屏幕宽度为1920像素,相当于398.4843356毫米,我的像素为0.20754392479166666666666666666667毫米
所以现在你可以计算,如果我将分辨率降低到1280 x 768像素,则等式变为: x ^ 2 +(768/1280 * x)^ 2 = 457.2 ^ 2 mm ^ 2 x解析为x = 392.0457656(根据Casio Classpad 300) 因此 1280像素对应392.0457656 mm,这使得1像素等于0.3062857544 mm。
这就是为什么一切都变得更大(相对于彼此),如果你切换分辨率。 测量单位为像素,但实际尺寸单位为mm。
所以你看,同样的屏幕,但结果不同,但每一个都是正确的。 你看,像素=相对于分辨率,但不是mm。
一般来说:
w: width in Pixel
h: height in Pixel
d: Monitor diagonal
x: Pixel-Size
根据毕达哥拉斯的说法:
(wx) 2 +(hx) 2 = d 2
它遵循:
由于分辨率设置中已知w和h,因此您现在也可以以英寸/厘米/毫米为单位计算屏幕的宽度和高度。
Imports Microsoft.VisualBasic
Namespace Units
Public Class UnitConversion
Public Shared Function mm2Points(ByRef dSomeMillimeters As Double) As System.Web.UI.WebControls.Unit
' Point ist eine Maßeinheit, die 1/72 Zoll entspricht.
' 1 Zoll = 1 in = 1000 Thou = 1000 mil = 1/12 ft = 1/36 yd = 25,4 mm = 2,54 cm = 0,254 dm = 0,0254 m.
' 1 Point = 0.35277777777777777777777777777778 mm
' --> 1mm = 2.834645669291338582677165354337 Point
Return System.Web.UI.WebControls.Unit.Point(dSomeMillimeters * 2.8346456692913384) 'Point
End Function
Public Shared Function mm2Pica(ByRef dSomeMillimeters As Double) As System.Web.UI.WebControls.Unit
'Pica ist eine Maßeinheit, die 12 Points entspricht.
' The contemporary computer pica is 1/72nd of the Anglo-Saxon compromise foot of 1959, i.e. 4.23_3mm or 0.166in. Not
' 1 Pica = 4.233333333333333333333333333333333 mm
' --> 1 mm = 0.23622047244094488188976377952758 Pica
Return dSomeMillimeters * 0.23622047244094488
End Function
Public Shared Function cm2Points(ByRef dSomeCentiMeters As Double) As System.Web.UI.WebControls.Unit
Return mm2Points(dSomeCentiMeters * 10.0)
End Function
Public Shared Function cm2Pica(ByRef dSomeCentiMeters As Double) As System.Web.UI.WebControls.Unit
Return mm2Pica(dSomeCentiMeters * 10.0)
End Function
End Class
End Namespace