在不关闭 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。
这将重置缓存,设计时表单界面将更新为正确的图像。
。
我将图像应用于 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。
这将重置缓存,设计时表单界面将更新为正确的图像。
。