在不关闭 VS 的情况下编辑 Winforms 中使用的图像

Edit Image used in Winforms without closing VS

我将图像应用于 Visual Studio 中的控件(在本例中为 PictureBox,但它可以是 Button 或任意数量的其他控件)。我想在第 3 方程序中编辑此图像,但 VS 不允许任何其他程序在文件打开时访问该文件。即使我暂时把图形换成别的东西,使我要保存的图像不再被使用,VS仍然不会放弃对文件的控制。

因此,我必须关闭整个项目才能将文件保存在其他程序中,然后启动它并重新加载项目,每次我想进行更改时。不用说,这非常耗时,我更希望能够在VS处于运行的情况下编辑程序中使用的图形,而不是每次都关闭它并重新加载。

(我不需要项目是 运行 - 我不希望它在运行时可以更改。但至少应该可以在不完全关闭 VS 的情况下换出图形。 ..)

问题总结:
允许在 WinForm 控件的底层图像源文件被修改后自动更新 Visual Studio 表单设计器界面。

问题报告:
当使用位图文件分配控件的图像 属性 时,GDI+ 会锁定该文件,从而阻止对源文件的任何修改尝试。

这个问题可以解决加载图像为Project Resources

  • 将位图文件存储在默认项目 Resources 文件夹中。
    通过“项目属性”→“资源”→“图像”将图像文件添加到项目后,会自动创建此目录,但也可以手动创建。
  • 从资源图像分配图像。
    当Image以这种方式分配时,Bitmap文件不会被锁定
  • 当底层位图文件被编辑时(使用外部图形程序或使用内置编辑器),Visual Studio 将在确认修改后立即更新控件的图像。
    这通常是实时发生的

备注:
- 将位图文件添加到 VS 资源时,保留原始位图格式。
- 确认Bitmap资源的Persistece 属性设置为Linked at compile time.

可能problems/drawbacks.
有时,可能会出现资源缓存问题:资源图像在尝试将其应用于控件的图像 属性 时似乎卡在位图文件的 older/previous 版本上。
对图像资源或文件的更改似乎无法解决问题。

当项目为 运行 时,会显示正确的图像,但设计时图像外观不会改变(是 "wrong" 的)。

这只是一个资源索引问题。
如果您在调试模式下尝试修改图像下的控件,或者图像从项目资源中删除,然后再次添加、修改,则可能会发生这种情况。

解决问题:

  • 关闭受影响的 Solution/Project(和 Visual Studio 实例)。
  • 删除 ../Bin/Debug 目录中的所有构建文件(.exe 文件、其关联的 .pdb 文件和 exe.config 文件)。
  • 删除../Obj/Debug目录中的所有文件。
    可以删除这些文件而不影响应用程序功能
  • 重新打开Solution/Project和Clean/Rebuild。

这将重置缓存,设计时表单界面将更新为正确的图像。