如何针对不同的 dpi 设置定位/调整 VB6 控件的大小?

问题描述 投票:0回答:2

在VB表单中,我放置控件(图像控件),例如横幅图像、图像中的徽标以及动画圆圈的图像列表来表示处理。

当我将这些控件设置为 96 dpi 时,它们是完美的。但一旦 dpi 设置更改为 120dpi,控件就会调整大小并重新定位。

如何在不同的 dpi 设置下保持相同的控件位置?

vb6
2个回答
0
投票

ActiveResize 是一个自动调整控件大小的好工具。虽然要花钱,但绝对值得一看。


0
投票

您可以通过组合清单文件和一些用于调整大小的代码来处理 VB6 中的 DPI 缩放问题。

为您的应用程序创建一个清单文件(例如,

YourApp.exe.manifest
),其中包含以下内容:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <application>
    <windowsSettings>
      <dpiAware>true</dpiAware>
    </windowsSettings>
  </application>
</assembly>

这会告诉 Windows 您的应用程序可识别 DPI,从而防止出现自动缩放问题。

VB6 本身不处理缩放,因此您需要自己调整控件。在您的

Form_Load
中使用此代码:

Private Sub Form_Load()
    Dim dpiX As Long, scaleFactor As Double
    dpiX = GetDeviceCaps(GetDC(0), 88) ' LOGPIXELSX
    scaleFactor = dpiX / 96 ' Assuming 96 DPI as the baseline

    Dim ctrl As Control
    For Each ctrl In Me.Controls
        With ctrl
            .Left = .Left * scaleFactor
            .Top = .Top * scaleFactor
            .Width = .Width * scaleFactor
            .Height = .Height * scaleFactor
        End With
    Next
End Sub

这会根据当前 DPI 缩放控件。

这应该可以解决问题

© www.soinside.com 2019 - 2024. All rights reserved.