VB6:如何切换到像素而不是缇

时间:2011-05-02 19:07:30

标签: vb6

我正在重构一个VB6应用程序。任何控件的测量值都是缇。在VB6中是否可以将控件设置为使用像素而不是?感谢

5 个答案:

答案 0 :(得分:8)

我在当天使用scalemode进行了广泛的工作,我所能说的就是不要打扰。它没有得到普遍的支持,这意味着无论如何你最终会转换回缇。

VB6是基于twips的,无论喜欢与否,所以如果你尝试做基于像素的事情,你将会在整个过程中对抗当前。

幸运的是VB.net终于完成了所有这些,并且完全基于像素,你仍然可以改变视口缩放,但.net似乎比Vb6处理得更好。

答案 1 :(得分:7)

ScaleMode Property有帮助吗?

  

使用图形方法或定位控件时,返回或设置一个值,指示对象坐标的测量单位。

答案 2 :(得分:7)

dim iInPixels as integer
dim iInTwips as integer

iInPixels = 200
iInTwips  = iInPixels * Screen.TwipsPerPixelX
iInPixels = iInTwips / Screen.TwipsPerPixelX

正如@drventure说的那样,你将在整个过程中对抗当前的情况,但实际上并不是那么糟糕,只要你能将逻辑隔离到一个位置。

答案 3 :(得分:3)

Microsoft知识库文章:How to Convert Twips to Pixels

上面的链接适用于Access VBA,但也适用于VB6。我不知道本机VB6功能可以满足您的需求。根据我的记忆,ScaleMode不适用于您想要做的事情(尽管事实上它似乎存在以解决您的确切问题)。

编辑:正如我在想的那样,ScaleMode没有解决我当时遇到的我的问题。根据您的尝试,它可以解决您的问题。我当然会先尝试,因为它会生成更简单,更易于维护的代码。

答案 4 :(得分:1)

我是这样做的。 我从Form1.Picture.Width得到Twips,并用pixelize除以VB6 Script中的任意值。 在一般声明中 Const pixelize As Double = 26.45833333

Command3.Caption =“Pixels:”& Int(Form1.Picture.Width / pixelize)& “x”& Int(Form1.Picture.Height / pixelize)

适合我,也许你得到了帮助。