0

我在我的 vb6 应用程序中遇到了非常奇怪的问题。它在其他所有机器上都可以正常工作,但是当我在客户的机器上运行它时,图像无法正确显示。

这就是问题的样子 示范 规格:

Windows 8 Pro(6.2 Build 9200)32 位
处理器架构 64 位
Core 2 Duo T9600 2.80 Ghz
Dell Latitude 6400。

我在许多其他机器上部署了相同的应用程序,并在不同操作系统的不同分辨率上进行了测试。到处都是完美的工作。但不能在客户的机器上正常工作。

4

1 回答 1

6

没有更多信息很难确定,但这里有一个猜测:

从 Windows 7 开始,如果系统发现您的显示器分辨率过高,它会自动选择高 DPI 设置。

如果您的程序不支持 DPI,则应用几种形式的 appcompat 中的一种(基于 Windows 版本、某些系统选项和应用程序特征)。根据 Windows 尝试的补救措施,位图图形最终可能会缩放和像素化或未缩放并显示为“小于预期”。

为了火上浇油,人们经常尝试使用 ScaleMode = vbPixels 和/或手动转换来进行 UI 布局,并依赖这些虚拟像素和实际屏幕指标之间的固定比率。硬编码 15 Twips/Pixel (1440/96) 非常普遍,因为 96 DPI VGA(和 VGA 衍生)方形像素屏幕已经使用了很长时间。

即使其他程序通过 DPI 修复调整了大小,这种谬误也会导致此类程序不正确地调整控件大小。

您可以尝试阅读High DPI以获取有关此主题的信息。

对于像表单背景图像这样的情况,您要么需要几个不同大小的位图,您可以在运行时从中选择,否则您需要自己缩放图像。

于 2013-10-11T18:20:30.877 回答