我在位图上绘制项目,并且想要将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
答案 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