图片不会在图片框中更改,vb.net

问题描述

我正在尝试对其进行编码,以便可以从类中的方法创建图片框。但是,绘制我的图片框时,它不会显示任何图像,而只会在指定位置显示指定尺寸的白色正方形。

这是我用来创建所述图片框的代码:

 Public Sub DrawEnemy(ByRef formInstance)
        Dim enemypic As New PictureBox

        enemypic.Image = Image.FromFile("C:\fboi1\Enemy.Png")
        enemypic.Width = 64
        enemypic.Height = 64
        enemypic.Location = New Point(Me.EnemyPosX,EnemyPosY)
        enemypic.Visible = True
        formInstance.Controls.Add(enemypic)

    End Sub

这是我从以下位置调用方法的地方:

Dim Enemy1 As New computerControlled(1,1)
        Enemy1.DrawEnemy(Me)

解决方法

请在您的DrawEnemy()方法中添加以下代码:

enemypic.SizeMode = PictureBoxSizeMode.StretchImage
,

当我突然拖动控制台窗口时,白框变成了我想要的图像。


啊哈!这意味着代码不会导致重新绘制表单。我们可以通过调用Invalidate()函数来触发它。

Public Sub DrawEnemy(formInstance As Form)
    Dim enemypic As New PictureBox

    enemypic.Image = Image.FromFile("C:\fboi1\Enemy.Png")
    enemypic.Width = 64
    enemypic.Height = 64
    enemypic.Location = New Point(Me.EnemyPosX,EnemyPosY)
    enemypic.Visible = True
    formInstance.Controls.Add(enemypic)

    formInstance.Invalidate()
End Sub

如果您在循环中多次调用此方法,则应在循环后进行处理,在此过程中,您还将阻止重新绘制(以防止闪烁),直到循环结束为止。

form.SuspendLayout()
For Each enemy In ...
    '...
    DrawEnemy(form)
Next
form.Invalidate()
form.ResumeLayout()

也有可能您只需要Invalidate()图片框即可。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...