VBA设置图片框大小以匹配绘制的项目

时间:2019-06-15 23:02:07

标签: vba bitmap picturebox

我在位图上绘制项目,并且想要将PB_Visualizer图片框设置为适合所有绘制项目的大小。我首先将位图和PB_Visualizer设置为已知大小,然后将重绘的偏移NEG和POS值重置为0。PB_Visualizer和BB_VIS的顶部和左侧位于相同的位置。

repeat xs

然后我测试所有点PixleVisualizerPoint,如果它们超过宽度和高度,则将其超出的量添加到偏移量中。我对X和Y都这样做,并测试是否为负。

    PB_Visualizer.Width = 5
    PB_Visualizer.Height = 5


    BB_Vis = New Bitmap(PB_Visualizer.Width, PB_Visualizer.Height)

    Offset_POS_Last = New Point(0, 0)       '// Reset
    Offset_NEG_Last = New Point(0, 0)

然后我获取超出偏移的POS和NEG值,并将它们添加到已知的起始值中,并设置PB_Visualizer。大小是所需宽度和高度的一半。 Offset_POS始终是负数,我认为它们都是正数,因为它们总是超出宽度和高度之外的点。我想念什么吗?

If PixleVisualizerPoint(ArrString_Nodes_Array(StringNumbertouse)(Row)).X + int_VisGridSpace > PB_Visualizer.Width Then
                        bln_Colision = True
                        Offset_Temp.X = PB_Visualizer.Width - PixleVisualizerPoint(ArrString_Nodes_Array(StringNumbertouse)(Row)).X + int_VisGridSpace
                        Offset_POS.X = PB_Visualizer.Width - PixleVisualizerPoint(ArrString_Nodes_Array(StringNumbertouse)(Row)).X + int_VisGridSpace

If Offset_POS.X < 0 Then
Offset_POS.X = (Offset_POS.X * -1)
End If
If Offset_POS_Last.X < Offset_POS.X Then
Offset_POS_Last.X = Offset_POS.X
Console.WriteLine("POS X   " & Offset_POS_Last.X)
End If

1 个答案:

答案 0 :(得分:0)

这是我正在使用的新代码。只需检查所有要点,并获得最正确和最底部的位置即可设置窗口大小。很好。

Private Sub SetLayoutSize()

    Dim Offset_POS_Last As Point
    Offset_POS_Last = New Point(0, 0)       '// REset

    For i = 0 To intSoftware_Total_Pixels
        If PixleVisualizerPoint(i).X > Offset_POS_Last.X Then
            Offset_POS_Last.X = PixleVisualizerPoint(i).X
        End If

        If PixleVisualizerPoint(i).Y > Offset_POS_Last.Y Then
            Offset_POS_Last.Y = PixleVisualizerPoint(i).Y
        End If
    Next
    '// Check size if less then increase
    If PB_Visualizer.Height < Offset_POS_Last.Y + int_VisGridSpace Then
        PB_Visualizer.Height = Offset_POS_Last.Y + int_VisGridSpace
        bln_Resize = True

    End If

    If PB_Visualizer.Width < Offset_POS_Last.X + int_VisGridSpace Then
        PB_Visualizer.Width = Offset_POS_Last.X + int_VisGridSpace
        bln_Resize = True
    End If

    Center_of_Drawing.X = PB_Visualizer.Width / 2
    Center_of_Drawing.Y = PB_Visualizer.Height / 2

End Sub