程序首先在不可见的图片框上绘制,然后图片框变为可见,尽管应该先出现可见性然后动态绘制

问题描述

我的代码片段:

    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() 以强制首先显示它。