2013-06-21 4 views
0

У меня есть несколько изображений в каталоге ресурсов и доступа к ним, как это ...WPF Image Path Blues

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

вы читали о вьючных URIs? 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