2013-06-21 53 views
0

我有很多的资源目录的图像和访问他们像这样...WPF图像路径蓝调

Public Function ReturnToolBarImage(ByVal ImageName As String) As Image 
    Dim UpdateImage As New Image 
    With UpdateImage 
    End With 
    Dim UpdateBitmap As New BitmapImage 
    With UpdateBitmap 
     .BeginInit() 
     .UriSource = New Uri("pack://application:,,,/HOA_Manager_Client_04;component/Resources/" & ImageName, UriKind.Absolute) 
     .EndInit() 
     .DecodePixelHeight = 32 
    End With 
    UpdateImage.Source = UpdateBitmap 
    Return UpdateImage 
End Function 

我在使用时的成像路径不是一个形象,坚持控制 - 我可以访问它这样

.ImageSource = "//application:,,,/HOA_Manager_Client_04;component/Resources/Customers.png" 

,但图像,或课程,过于庞大.. Soooooo我增加了一个功能,调整后的图像保存到Temp文件夹(即工作),并发送路径返回 - 但对于一些原因,只是不工作(没有错误,只是没有图像)。有任何想法吗?

Public Function ReturnToolBarImageAsString(ByVal ImageName As String) As String 
    Dim UpdateImage As New Image 
    With UpdateImage 
    End With 
    Dim UpdateBitmap As New BitmapImage 
    With UpdateBitmap 
     .BeginInit() 
     .UriSource = New Uri("pack://application:,,,/HOA_Manager_Client_04;component/Resources/" & ImageName, UriKind.Absolute) 
     .EndInit() 
     .DecodePixelHeight = 32 
    End With 
    Using FS As New IO.FileStream("../../Pages/Temp/" & ImageName, IO.FileMode.Create) 
     Dim vEncoder As New PngBitmapEncoder 
     vEncoder.Frames.Add(BitmapFrame.Create(UpdateBitmap)) 
     vEncoder.Save(FS) 
    End Using 
    'Return "../Temp/" & ImageName 
    Return "//application:,,,/HOA_Manager_Client_04;component/Pages/Temp/" & ImageName 
End Function 
+0

你看了关于包的URI? http://msdn.microsoft.com/en-us/library/aa970069.aspx – Darlene

+0

有什么办法然后将图像文件保存为资源? – gchq

+0

为什么不直接返回保存图像的路径''../../Pages/Temp/“&ImageName'?这就是图像所在,并且它不会奇迹般地进入嵌入式资源。 – Clemens

回答

0

通过在bin目录中创建在运行时的目录似乎已经治愈的问题

Public Function ReturnToolBarImageAsString(ByVal ImageName As String) As String 
    Dim UpdateImage As New Image 
    With UpdateImage 
    End With 
    Dim UpdateBitmap As New BitmapImage 
    With UpdateBitmap 
     .BeginInit() 
     .DecodePixelHeight = 32 
     .UriSource = New Uri("pack://application:,,,/HOA_Manager_Client_04;component/Resources/" & ImageName, UriKind.Absolute) 
     .EndInit() 
    End With 

    Dim vPath As String = My.Application.Info.DirectoryPath 
    If Not IO.Directory.Exists(vPath & "\Temp_Images") Then 
     IO.Directory.CreateDirectory(vPath & "\Temp_Images") 
    End If 
    Using FS As New IO.FileStream(vPath & "\Temp_Images\" & ImageName, IO.FileMode.Create) 
     Dim vEncoder As New PngBitmapEncoder 
     vEncoder.Frames.Add(BitmapFrame.Create(UpdateBitmap)) 
     vEncoder.Save(FS) 
    End Using 
    Return vPath & "\Temp_Images\" & ImageName 
End Function