VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

メニューへ戻ります。 PictureBox 関係のメニュー
1.PictureBox コントロールに関するワンポイントテクニック集
2.FileStream を使ったロックされない画像表示
3.画像ファイルをドラッグ・アンド・ドロップで PictureBox 上に表示
4. 
5. 
6.
7.
8. 
9. 
10. 
11.
12.
 . 
20.その他、当サイト内に掲載の PictureBox に関するサンプル


2.FileStream を使ったロックされない画像表示(21_Pic_02) (旧、SampleNo.253)
1.一般的な方法で画像を表示した場合画像ファイルがロックされるテスト
2.FileStream を使ったロックされない画像表示
3.
4.
5.
6.
こちらのサンプルは、PictureBox コントロールに関するプロパティやメソッドを使った、画像の表示方法や PictureBox に表示した画像の保存方法等を主体にしたサンプルを紹介しております。
画像の描画及び加工が主体となるようなサンプルは、描画・画像関係の方に掲載しておりますので、そちらも合わせてご覧下さい。
 下記プログラムコードに関する補足・注意事項 
動作確認:Windows 8.1 (Windows 7) / VB2013 (VB2010) / Framework 4.5.1 / 対象の CPU:x86
Option :[Compare Text] [Explicit On] [Infer On] [Strict On]
Imports :追加なし
参照設定:
追加なし
その他 :
    :
このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので)
必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい)
このページのトップへ移動します。 1.一般的な方法で画像を表示した場合画像ファイルがロックされるテスト
PictureBox コントロールの Image プロパティをデザイン時に手動でファイルに設定する場合、または
実行時に FromFile メソッドを使用する場合に発生します。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'1.一般的な方法で画像を表示した場合画像ファイルがロックされるテスト
    'Image.FromFile メソッドを使用して PictureBox コントロール内の画像を読み込むと、
    '画像ファイルはアプリケーションの起動時にロックされます。
    '画像ファイルはアプリケーションの実行中、ロックされたままになります。
    '実行時に Image プロパティを [なし] に設定しても、画像ファイルはロックされます。

    With PictureBox1
        .SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize
        .Image = System.Drawing.Image.FromFile("..\..\..\data_pic\test1.jpg")
    End With

    'ロックされたままなのでエラーが発生します。
    Try
        System.IO.File.Move("..\..\..\data_pic\test1.jpg", "..\..\..\data_pic\test1.jpg")
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try

    '次のテストにそなえて一旦削除しておきます。
    'Call sChangeImage(PictureBox1)  '一旦、Image を消去
End Sub

このページのトップへ移動します。 2.FileStream を使ったロックされない画像表示

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
'2.FileStream を使ったロックされない画像表示

    'FileStream オブジェクトを使用して読み込み表示するとロックされません。
    Using fs As System.IO.FileStream = New System.IO.FileStream("..\..\..\data_pic\test1.jpg", _
                                                    System.IO.FileMode.Open, System.IO.FileAccess.Read)
        PictureBox1.Image = System.Drawing.Image.FromStream(fs)
    End Using

    'ロックされていないかファイル名を変更してみる(エラーは発生しない)
    'ただし、Button1 実行後は、ロックされるのでエラーが発生する。(削除しておかないと)
    Try
        System.IO.File.Move("..\..\..\data_pic\test1.jpg", "..\..\..\data_pic\test1.jpg")
        MessageBox.Show("ファイル名を変更しました。")
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub



ロックされるから問題だという事ではありません。
編集中の画像が他で使用されて変更されたりしたら困る場合もありますし、その逆の場合もあります。
使用目的に合わせて読み込み方法を選んで下さい。

このページのトップへ移動します。 3.


このページのトップへ移動します。 4.


このページのトップへ移動します。 5. 



このページのトップへ移動します。 6.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)
ピクチャーボックス




このページのトップへ移動します。