0

ユーザーが選択したjpgファイルによってフォームの壁紙をプログラムで割り当てる必要があります。新しいビットマップでこれを行いましたが、そうするとjpegファイルが読み取り専用になります。

RAMにjpegファイルを読み込んで壁紙にすることは可能ですか?または、プロジェクト リソースに jpeg ファイルを追加し、リソースを使用しますか?

私の非常に下手な英語で申し訳ありません:(

よろしくお願いします。

4

2 に答える 2

2

を使用しMemoryStreamます:

MemoryStream ms = new MemoryStream(File.ReadAllBytes(pathToImageFile));
this.BackgroundImage = Image.FromStream(ms); ;
于 2013-02-09T14:10:45.230 に答える
0

GDI+ がファイルに設定するファイル ロックを回避する最も簡単な方法は、Bitmap(Image) コンストラクターを使用してビットマップのディープ コピーを作成することです。このような:

    private void SetWallpaperButton_Click(object sender, EventArgs e) {
        if (openFileDialog1.ShowDialog() == DialogResult.OK) {
            using (var img = Image.FromFile(openFileDialog1.FileName)) {
                if (this.BackgroundImage != null) this.BackgroundImage.Dispose();
                this.BackgroundImage = new Bitmap(img);
            }
        }
    }

usingステートメントにより、ファイル ロックが確実に解除されます。また、Dispose() 呼び出しにより、古いビットマップが迅速に破棄されることが保証されます。これは、32 ビット オペレーティング システムで大きなビットマップを使用して OOM を回避することが多いため、重要です。

于 2013-02-09T15:03:58.313 に答える