【问题标题】:Resize picturebox and maintain aspect ratio (1:1) vb.net调整图片框大小并保持纵横比 (1:1) vb.net
【发布时间】:2018-07-31 15:24:06
【问题描述】:

我有一个正在调整大小的图片框,我需要它来保持 1:1 的纵横比。基本上宽度和高度都与用户调整大小相同。调整大小工作正常,但纵横比不保持。我该如何更改它以包括保持纵横比?

这是调整控件大小时调用的内容

    Private Sub pbsMouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
    If mouseOnHandle Then
        ReleaseCapture()
        SendMessage(activeControl.Handle, WM_NCLBUTTONDOWN, CInt(DirectCast(sender, PictureBox).Tag), 0)
        If GetCapture = 0 Then mouseOnHandle = False
        Application.DoEvents()
    End If
End Sub

ReleaseCapture()

    <DllImport("user32.dll")> _
Public Shared Function ReleaseCapture() As Boolean
End Function

常量和函数

    Public Declare Function GetCapture Lib "user32" Alias "GetCapture" () As Integer

Private Const WM_NCLBUTTONDOWN As Integer = &HA1

【问题讨论】:

  • 显示图像的大小与picturebox的大小(或比例)关系不大。另外,1:1 意味着一个正方形......这可能不是你的意思
  • 您可以将PictureBoxSizeMode设置为Zoom。这样,通过改变PictureBox的大小,图像的大小在保持大小比例的情况下增加或减少。
  • 我将图片框设置为拉伸,以便整个图像适合里面。我的意思是 1:1。我正在调整 QR 码的大小,应该是正方形
  • 根据您的规格,您不需要拉伸。
  • 也许我的问题并不清楚。我希望保持实际图片框控件的纵横比。因此,如果用户调整它的大小,它的宽度和高度都会增加/减少。我需要在图片框中显示整个二维码,所以我选择了拉伸。我不确定更改 SizeMode 对此有何帮助?

标签: vb.net winforms


【解决方案1】:

我最终将此函数添加到控件的调整大小事件中

    Private Sub maintainAspectRatio()
    Dim width As Integer = activeControl.Width
    Dim height As Integer = activeControl.Height

    If width > height Then
        activeControl.Height = activeControl.Width
    ElseIf height > width Then
        activeControl.Width = activeControl.Height
    End If
End Sub

这解决了我的问题

【讨论】:

    猜你喜欢
    • 2012-11-15
    • 2018-10-10
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 2013-06-26
    • 2012-04-15
    相关资源
    最近更新 更多