WPFで画像を読み込んだ場合、画像ファイルをアプリケーションが保持してしまい、名前変更・削除等ができなくなります。
「別のプロセスで使用されているため、プロセスはファイルにアクセスできません。」とのメッセージが表示されます。
その場合、サムネイルを作成して表示する方法があります。
''' <summary>
''' 画像パスからサムネイルを作成
''' </summary>
''' <param name="FilePath">画像ファイル</param>
''' <param name="Width">ファイル幅</param>
''' <returns></returns>
Public Shared Function MakeThumbnail(ByVal FilePath As String, Optional ByVal Width As Integer = 0) As BitmapImage
Try
'サムネイル画像
Dim bitmap As BitmapImage = New BitmapImage
Using fs = New System.IO.FileStream(FilePath, IO.FileMode.Open)
bitmap.BeginInit()
bitmap.CacheOption = BitmapCacheOption.None
bitmap.CacheOption = BitmapCacheOption.OnLoad
If Width > 0 Then
bitmap.DecodePixelWidth = Width
End If
bitmap.StreamSource = fs
bitmap.EndInit()
bitmap.Freeze()
End Using
Return bitmap
Catch ex As Exception
Return New BitmapImage(New Uri("Resources/errir.png", UriKind.Relative))
End Try
End Function
使用方法です。
Img.Source = Utils.MakeThumbnail("C:\TEST\Sample.png", 300)
作成した関数を利用してImgタグのSourceプロパティにBitmapImageをセットします。