WPF 画像が削除できない問題 VB.NET
WPFで画像を読み込んだ場合、画像ファイルをアプリケーションが保持してしまい、名前変更・削除等ができなくなります。
「別のプロセスで使用されているため、プロセスはファイルにアクセスできません。」とのメッセージが表示されます。
その場合、サムネイルを作成して表示する方法があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | ''' <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 |
使用方法です。
1 | Img.Source = Utils.MakeThumbnail( "C:\TEST\Sample.png" , 300) |
ImgタグのSourceプロパティにBitmapImageをセットすることがあります。
コメント
コメントを投稿