2016-05-22 18 views
1

私は、C#でユーザーがメニューストリップから背景の特定の名前を選択すると、背景がその必要な背景に変わります。問題は、私はユーザー入力を保存することができない、私は設定を試みたが、私は設定で "system.drawing.image"を見つけることができないので、私はユーザーの背景を保存することができる方法はありますか?ユーザーが変更できる外部の背景はなく、リソースフォルダ内のものだけです。ここでは、system.drawing.colorをdrawing.imageの代わりに使用できないというエラーを示すコードを示します。フォームに背景画像を保存するにはどうすればいいですか?C#

次のように文字列型で新しい設定を追加して使用します:

保存

using System; 
    using System.Collections.Generic; 
    using System.ComponentModel; 
    using System.Data; 
    using System.Drawing; 
    using System.Linq; 
    using System.Text; 
    using System.Windows.Forms; 

    namespace TAC 
    { 
     public partial class Form1 : Form 
    { 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     panel1.Location = new Point(165, 157); 
     panel2.Location = new Point(289, 158); 
     panel3.Location = new Point(47, 275); 
     panel4.Location = new Point(47, 402); 
     this.BackgroundImage = Properties.Settings.Default.FormImage; 
    } 

    private void bLUEToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     this.BackgroundImage = TAC.Properties.Resources.tex1; 
    } 

    private void gREENToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     this.BackgroundImage = TAC.Properties.Resources.tex2; 
    } 

    private void oRANGEToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     this.BackgroundImage = TAC.Properties.Resources.tex3; 
    } 

    private void rEDToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     this.BackgroundImage = TAC.Properties.Resources.tex4; 
    } 

    private void pURPLEToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     this.BackgroundImage = TAC.Properties.Resources.tex5; 
    } 

    private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     Properties.Settings.Default.FormImage = this.BackgroundImage; 
    } 
    } 
    } 

答えて

2

利用Saveメソッドを使用すると、設定に画像を追加したい場合は設定

Properties.Settings.Default.Save(); 

を保存しますイメージを設定する(フォームを閉じるとき)

MemoryStream ms = new MemoryStream(); 
Propertis.Resources.MyImage.Save(ms,ImageFormat.Jpeg); 
Properties.Settings.Default.BackImg = Convert.ToBase64String(ms.ToArray()); 
Properties.Settings.Default.Save(); 

そして(フォームのロード中)を設定し、バックグラウンドに設定から画像を読み取る

string img = Properties.Settings.Default.BackImg ; 
byte[] i = Convert.FromBase64String(img); 
this.BackgroundImage = Image.FromStream(new MemoryStream(i)); 

どのようにカスタム設定を追加しますか?

http://www.codeproject.com/Articles/29130/Windows-Forms-Creating-and-Persisting-Custom-User

+0

私は、フォームを閉じると、フォームのロードと最初に追加利用コードにここに与えているセーブコード、私は私のアプリをデバッグしようと第二に、私はこの方法を実行する必要があるときに例外エラー与えセミコロンを追加しました3つの異なるイメージの3倍?私はそこに追加したドロップダウンのように、ユーザーがイメージを選択するので、イメージが選択されたときにフォームが閉じられるときに保存され、フォームが再び開くとき、その選択されたイメージはバックグラウンドでなければなりません。 –

+0

ここで[My Project Files](https://app.box.com/s/uujxlu26xgb1o1mvu9w6tavxm0fjfsfj)をダウンロードして編集してください。何をすべきか理解できます。 –

+0

あなたが英語のために言ったことを正確にはわかりません。再利用のためのメソッドにコードを入れることができます:SaveToSetting(Image i)。あなたが選択したすべてのイメージをバックグラウンドに設定できます。その後、閉じるには、設定に保存し、フォームロードを設定 – mohsen

関連する問題