ホームページ > バックエンド開発 > C++ > PictureBox 画像更新時のファイル アクセス エラーを防ぐにはどうすればよいですか?

PictureBox 画像更新時のファイル アクセス エラーを防ぐにはどうすればよいですか?

DDD
リリース: 2025-01-13 22:56:43
オリジナル
669 人が閲覧しました

How Can I Prevent File Access Errors When Updating PictureBox Images?

PictureBox 画像を変更するときにファイル アクセスを維持する

デスクトップ アプリケーションで、新しい Bitmap() コンストラクターを使用して PictureBox の画像を変更すると、元の画像ファイルがすでに使用されている場合、ファイル アクセス エラーが発生する可能性があります。この問題は、PictureBox が初期ファイルへの参照を保持しており、新しい画像が読み込まれるときにファイルにアクセスできない場合に発生します。

この問題を解決するメモリに優しい方法は、File.ReadAllBytes() を使用して画像を MemoryStream にロードし、次に Image.FromStream() を使用して新しい画像を作成することです。こうすることで、元のファイルのロックが解除され、ファイル アクセス違反なく PictureBox に新しい画像を表示できるようになります。

以下は変更されたコード例です:

<code class="language-c#">public static Image FromFile(string path)
{
    byte[] bytes = File.ReadAllBytes(path);
    using (MemoryStream ms = new MemoryStream(bytes))
    {
        Image img = Image.FromStream(ms);
        return img;
    }
}

pbAvatar.Image = FromFile(filePath);</code>
ログイン後にコピー

この方法は、ファイル アクセスの問題を解決するだけでなく、パフォーマンスも向上します。テストの結果、この手法を使用した画像の読み込みには画像あたり約 0.26 ミリ秒かかるのに対し、ビットマップからのコピーには画像あたり約 0.50 ミリ秒かかることがわかりました。バイト配列のメモリ使用量が小さくなり、単一のイメージ作成操作が効率化に貢献します。

生成された画像が Bitmap オブジェクトである必要がある場合は、(Bitmap)Image.FromStream(ms) を使用して返された画像を変換できることに注意してください。 リソースが正しくリリースされるようにするために、using ステートメントを使用して MemoryStream を管理します。

以上がPictureBox 画像更新時のファイル アクセス エラーを防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート