編集:背景情報を取得するには、このプログラムに関する私の古い投稿も参照してくださいC# - 他のプログラムで編集しながらリアルタイムで BackgroundImage を更新する
画像ビューアーを作成しました。選択した画像を「フォーム」の背景として表示します。
プログラムを閉じるまで、読み込んだすべての画像は、Photoshop や GIMP などの画像操作アプリなど、他のアプリケーションで上書きされないようにブロックされます。
私のコードは非常に単純です:
public partial class Form1:Form {
private string FileName;
public Form1() {
InitializeComponent();
FileName = "";
openFileDialog1.Filter = "PNG Files (*.png)|*.png|JPG Files (*.jpg)|*.jpg";
}
private void button1_Click( object sender, EventArgs e ) {
if(openFileDialog1.ShowDialog() == DialogResult.OK) {
button2.Enabled = true;
FileName = openFileDialog1.FileName;
setImage();
}
}
private void button2_Click( object sender, EventArgs e ) {
setImage();
}
private void setImage() {
Stream str=new FileStream( FileName, FileMode.Open, FileAccess.Read, FileShare.Read);
Bitmap tempImg= new Bitmap( Bitmap.FromStream(str) );
str.Close();
using( tempImg = new Bitmap(FileName) ) {
Rectangle rect = new Rectangle(0, 0, tempImg.Width, tempImg.Height);
PixelFormat format = tempImg.PixelFormat;
this.BackgroundImage = new Bitmap(FileName).Clone(rect, format);
}
openFileDialog1.FileName = "";
}
}
この問題を解決するにはどうすればよいですか?
アップデート :
このコードは私には機能しません。
private void setImage() {
// using (FileStream stream = new FileStream("MyImage.png", FileMode.Open, FileAccess.Read))
//var image = Image.FromStream(stream);
using( new FileStream( FileName, FileMode.Open, FileAccess.Read, FileShare.Read) ) {
Stream str=new FileStream( FileName, FileMode.Open, FileAccess.Read, FileShare.Read);
Bitmap tempImg= new Bitmap( Bitmap.FromStream(str) );
str.Close();
tempImg = new Bitmap(FileName);
Rectangle rect = new Rectangle(0, 0, tempImg.Width, tempImg.Height);
PixelFormat format = tempImg.PixelFormat;
this.BackgroundImage = new Bitmap(FileName).Clone(rect, format);
}
openFileDialog1.FileName = "";
}