问题描述
我的代码片段:
Dim G As Graphics
Dim BBG As Graphics
Dim BB As Bitmap
Dim R As Rectangle
..................................... ...................
picMainScreen.Visible = True
G = picMainScreen.CreateGraphics
BB = New Bitmap(picMainScreen.Width,picMainScreen.Height)
For x = 0 To 256 * 3 - 1 Step 24
For y = 0 To 240 * 3 - 1 Step 24
R = New Rectangle(New Point(x,y),New Point(24,24))
G.DrawRectangle(Pens.Black,R)
Next
Next
在这段代码中,picMainScreen 是一个原本不应该可见的 PictureBox。 然后通过某些条件,picMainScreen 应该变为可见。 然后,代码将所有矩形绘制到图片上。
然而,事实并非如此:首先将矩形绘制到图片上,然后图片变得可见。
为什么会这样?有什么补救办法?
解决方法
您的矩形实例化很有趣,因为您使用了两个 Point 类型的参数。 R = 新矩形(新点(x,y),新点(24,24))
Microsoft Docs 显示了这些参数类型; 矩形(点,大小) 使用指定的位置和大小初始化 Rectangle 类的新实例。
https://docs.microsoft.com/en-us/dotnet/api/system.drawing.rectangle.-ctor?view=netframework-4.7.2
我不确定参数类型是否有问题;但是,您将绘图图形与图片控件混合在一起,它们可能不会很好地共存于同一空间中。
您可以尝试在使图片控件可见后调用 DoEvents() 以强制首先显示它。