如何将 wmf 文件动态分配给图片框

Posted

技术标签:

【中文标题】如何将 wmf 文件动态分配给图片框【英文标题】:How to dynamically assign a wmf file to a picturebox 【发布时间】:2021-07-25 01:54:25 【问题描述】:

我有一个使用 100 个 .wmf 文件的 VB6 遗留系统 我现在正在使用 Visual Studio 2019 VB.NET 创建相同的应用程序 我在将图片框从默认的 .wmf 文件动态更改为新文件时遇到问题。 我已经测试了代码以毫无问题地更改为 .jpg 图像。 (参见下面的代码 - 输出替换原始 .wmf 图像,然后在空白和 .jpg 图像之间切换)

Static Toggle As Boolean
Dim FName As String = ""
If Toggle Then
    FName = "D:\VB6\06ST.jpg"
Else
    FName = "D:\VB6\06ST.wmf"
End If
Toggle = Not Toggle
PictureBox1.Image = Image.FromFile(FName)

有没有办法解决这个问题?

【问题讨论】:

不要一遍又一遍地从同一个文件中创建 Image 对象,也不要丢弃它们。只需在开始时创建两个 Image 对象,根据需要在它们之间切换,然后在完成后处理它们。 查看文档docs.microsoft.com/en-us/dotnet/api/… 我学到了 2 个有趣的东西。第一个 .wmf 不受支持,第二个“文件保持锁定直到图像被释放。” 我会尝试两件事。使用元文件子类/构造函数,如果这仍然导致中断,请删除 .wmfs 的可放置标头(= 前 22 个字节)。 【参考方案1】:

移动这一行:

Toggle = Not Toggle

进入 else 条件。

要么这样,要么我不明白这个问题。

【讨论】:

谢谢 - 切换操作正确,问题是图片框将仅显示 .jpg 文件并在为 .wmf 文件执行代码时变为空白(即使初始图像设置为.wmf 文件在表单设计器中显示正确)

以上是关于如何将 wmf 文件动态分配给图片框的主要内容,如果未能解决你的问题,请参考以下文章

R:将值分配给数据框中的动态变量时遇到问题

将Sub分配给动态定义的CommandButton

如何将 csv 数据中的动态驱动器访问权限分配给谷歌驱动器文件夹?

如何将名称动态分配给 RFID 阅读器连接的串行端口

如何将由三重指针组成的矩阵动态分配给一个类?

如何将函数中使用的数组传递给动态分配的main数组?