Vb.net 获取System.Drawing.Bitmap的文件路径
是否有方法获取Vb.net 获取System.Drawing.Bitmap的文件路径,vb.net,Vb.net,是否有方法获取系统.Drawing.Bitmap类型的文件路径? 比如: My.Resources.myImg.GetFilePath或 GetFilePath(My.Resources.myImg) 显然,我上面的例子并不存在。我只是想表明我的意图。我不太确定这些资源是否有路径,我认为它们是嵌入到应用程序中,然后读入内存的(不过我可能错了) 如果你想让它们有一个路径,你必须将它们保存到一个文件中。这将图像保存在本地应用程序数据文件夹中: Dim MyImgPath As String = IO
系统.Drawing.Bitmap
类型的文件路径?
比如:
My.Resources.myImg.GetFilePath
或
GetFilePath(My.Resources.myImg)
显然,我上面的例子并不存在。我只是想表明我的意图。我不太确定这些资源是否有路径,我认为它们是嵌入到应用程序中,然后读入内存的(不过我可能错了) 如果你想让它们有一个路径,你必须将它们保存到一个文件中。这将图像保存在本地应用程序数据文件夹中:
Dim MyImgPath As String = IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "myImg.bmp")
My.Resources.myImg.Save(MyImgPath, Imaging.ImageFormat.Bmp)
如果要将图像保存在与应用程序相同的文件夹中:
Dim MyImgPath As String = IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory(), "myImg.bmp")
您可能希望创建自己的对象:
Public Class MyBitmap
Inherits Bitmap
Private _FilePath As String
'------------------------'
Public Property FilePath as String
Get
Return _FilePath
End Get
' etc...
您可以设置路径并在以后从属性中获取它,这是不可能的,因为有很多方法可以初始化System.Drawing.Bitmap(例如:流、Uri、另一个图像对象),而此位图是一个非常通用的对象 根据您使用的技术,可能有一种更专门的图像类型更适合使用。例如,如果您使用的是WPF,请检查BitmapImage,它将文件路径存储为属性URI源 如果您确实需要使用System.Drawing.Bitmaps,我建议您创建一个包含位图和文件路径的模型。像这样:
{
public Bitmap MyImage {get; set; }
public string FilePath {get; set; }
}
实际上,我的
Resources
文件夹中确实有这个文件,可以对它进行硬编码。这正是我想要避免的。问题是我正在使用其他人的函数,该函数需要一个字符串。@克里斯:编译应用程序后,myproject\Resources
文件夹将不存在。据我所知,您需要将资源写入文件。请尝试仅取出.exe并在另一台计算机上运行。您将仍然拥有这些图像,尽管您没有使用它复制任何图像。编译应用程序后,您的资源
文件夹将不再重要,因此,为了从映像获取文件路径,请在每次需要时保存它。我已将资源设置为复制到输出目录。我知道这不是最好的方法,但我正在使用的现有代码库中有一些函数我不想去碰,它们将字符串作为图像路径的参数。现在,他们有它依赖于网络资源。我只是在尝试创建一个本地回退,它比一个服务器上的文件更可靠一点network@Chris:如果将资源设置为“复制到输出目录”,那么为什么将其作为资源?使用或,否则您将有一个嵌入的图像和一个保存在磁盘上的图像。为了简单地移动你的应用程序,我建议将图像作为普通资源(My.Resources
)使用,然后在需要时将其写入磁盘(如上所示)。但这对资源来说是不行的。此外,您不需要将Private\u FilePath作为字符串
,您只需要这一行:Public Property FilePath作为字符串
。这一点您可能是对的,但我认为最好将变量本身包含在类中,也一样。除非在设置/获取时使用只读属性或自定义操作,否则实际上没有多大区别,否则它们都是相同的。如果没有变量,编译器会为您创建变量。:)是的,但我在学校的Java中就是这样学的,并从中养成了习惯。你知道,旧习惯很难改变。一般来说,位图是内存中的一个对象。它可能没有从文件中读取,因此不一定有文件路径。