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

VB6:如何切换到像素而不是twips,vb6,Vb6,我正在重构一个VB6应用程序。任何控件的测量值均以twips为单位。在VB6中,是否可以将控件设置为使用像素而不是twips?谢谢有帮助吗 返回或设置一个值,该值指示使用图形方法或定位控件时对象坐标的测量单位 Microsoft知识库文章: 上面的链接用于访问VBA,但也适用于VB6。我不知道本机VB6功能可以满足您的需要。据我所知,ScaleMode不会为您想要做的事情工作(尽管它似乎是为了解决您的确切问题而存在的) 编辑:就我所想,ScaleMode并没有解决我当时遇到的问题。这取决于你想做

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

有帮助吗

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


Microsoft知识库文章:

上面的链接用于访问VBA,但也适用于VB6。我不知道本机VB6功能可以满足您的需要。据我所知,ScaleMode不会为您想要做的事情工作(尽管它似乎是为了解决您的确切问题而存在的)


编辑:就我所想,ScaleMode并没有解决我当时遇到的问题。这取决于你想做什么,它可能会很好地解决你的问题。我当然会先尝试一下,因为它会生成更简单、更易于维护的代码。

我在scalemode上做了大量的工作,我能说的就是不用麻烦了。它并没有得到普遍的支持,这意味着你最终会在某些事情上转换回twips

VB6是基于twips的,不管你喜欢与否,所以如果你试图做一些基于像素的事情,你将在整个过程中与电流作斗争

幸运的是,VB.net最终结束了这一切,并且完全基于像素,您仍然可以更改视口缩放,但.net似乎比Vb6处理得更好

dim iInPixels as integer
dim iInTwips as integer

iInPixels = 200
iInTwips  = iInPixels * Screen.TwipsPerPixelX
iInPixels = iInTwips / Screen.TwipsPerPixelX
正如@drventure所说,你将在整个过程中与潮流抗衡,但这并不是那么糟糕,只要你能将逻辑隔离到一个点

我是这样做的。 我从Form1.Picture.Width中获得了Twips,通过使用像素化进行分割,可以在VB6脚本中的任何位置获得像素。 在一般声明中
常量像素化为Double=26.45833333

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


对我有用,也许你会得到帮助。

你是在问如何对单个控件执行此操作,还是同时对每个控件执行此操作?@Justin,谢谢你的评论。我特别感兴趣的是如何对带有子控件的窗体执行此操作。请添加实际答案