0

現在、フォームでPictureBoxを使用して画像を表示するC#アプリケーションをコーディングしています。

ここで、このイメージを一貫して(たとえば、2秒ごとに)更新したいと思います。しかし、私はこれを行うことができません。

新しいイメージも同じファイルディレクトリ/名前であり、ロードされた元のイメージを置き換えるためです。そのため、表示されている画像を置き換えたい場合は、「ファイルは別のプログラムによって使用されています...など」と表示されます。

基本的に、PictureBoxを使用して画像をロードしたいのですが、ロードされた画像がそのディレクトリで変更されると、この画像は一貫して更新されます。

これは可能ですか?C#でこれを行う他の方法はありますか?

よろしくお願いします、Perumal

4

3 に答える 3

2

ストリームが閉じられていないように聞こえます。stream.close();画像を読み込んだら、電話してみてください。このように画像を読み込んでいる場合は、このImage i = new Image(File.Open("blub.png"));ように少し書き直す必要があります。

FileStream fs = File.Open("blub.png");
Image img = new Image(fs);
fs.Close();
fs.Dispose();
于 2012-05-23T13:25:24.407 に答える
0

タイマー(timeImageChange以下の例で呼び出されます)を使用して、ファイルの名前を2つの異なるファイル名に変更するだけです。その後、あなたは次のようなものを持つことができます

bool imageALoaded = true;
timerImageChange.Interval = 2000;
timerImageChange.Enabled = true;

private void timerImageChange_Tick(object sender, EventArgs e)
{
    if (imageALoaded)
    {
        this.pictureBox1.Image = imageB;
        imageALoaded = false;
    }
    else
    {
        this.pictureBox1.Image = imageA;
        imageALoaded = true;
    }
}

これはあなたが望むことをするはずです。

これがお役に立てば幸いです。

于 2012-05-23T13:31:40.150 に答える
0

私の最善の解決策は、ボリュームシャドウコピーと呼ばれる実行可能ファイルを使用することです。これは、使用されているファイルをコピーできるため、実際にはバックアップ用のWindowsで使用されます。私は実際にC#コードなしでこのツールを試しましたが、コードで簡単に使用できます。

リンクは次のとおりです:http ://www.howtogeek.com/howto/windows-vista/backupcopy-files-that-are-in-use-or-locked-in-windows/

私の考えは、別の名前でファイルのコピーを作成し、そのファイルにアクセスして、次にロードした後に削除することです。これが最善のアプローチだと思います。

于 2012-05-23T13:36:56.310 に答える