2016-10-18 12 views
0

私は描画アプリケーションを作成しています。そのためには、パネル用のビットマップを作成する必要があります。私の問題は、あなたのフィールドがなければならないのでビットマップファイルをデスクトップに置くことができません

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



namespace Paint_AppLication 
{ 
public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 
    private bool mouse_down = false; 
    //My Problem 
    string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); 
    private Bitmap bit = new Bitmap(path + "\\" + "Bitmap.bmp"); 


    // Other Code Not my problem 
    private Color col = Color.Black; 
    private void panel1_MouseDown(object sender, MouseEventArgs e) 
    { 
     mouse_down = true; 
    } 

    private void panel1_MouseUp(object sender, MouseEventArgs e) 
    { 
     mouse_down = false; 
    } 

    private void panel1_MouseMove(object sender, MouseEventArgs e) 
    { 
     toolStripStatusLabel1.Text = e.X + ", " + e.Y; 
     if (mouse_down == true) 
     { 
      panel1.BackgroundImage = bit; 
      bit.SetPixel(e.X, e.Y, col); 

     } 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     colorDialog1.ShowDialog(); 
     col = colorDialog1.Color; 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
    } 

} 

} 
+0

コードをメソッドに配置する必要があります。コンストラクタに追加することができます。したがって、ラインをプライベートBitcmap bit = nullに変更してください。コンストラクタのaddビット=新しいビットマップ(パス+ "\\" + "Bitmap.bmp"); – jdweng

+0

ありがとう、ビジュアルスタジオは私にエラーを与えています。私は、タイプまたは名前空間の定義、またはエンドポイントの名前を指定するメソッドまたは関数にBitmapビット=新しいビットマップ(パス+ "\\" + "Bitmap.bmp" of-file expected "別の '}'が必要なだけでなく、別の '}'が追加されましたが、" Typeまたは名前空間の定義、またはファイルの終わりが期待されます "というエラーが発生します。 –

答えて

0

「非静的フィールド、メソッド、またはプロパティ 『Form1.path』を参照することはできませんフィールド初期化子」私はデスクトップの配置を取得するとき、それは私に のエラーを与えています静的:

初期コード:

using System; 
using System.Drawing; 
internal class MyClass1 
{ 
    private readonly string _path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); 
    private Bitmap _bitmap = new Bitmap(_path + "\\" + "Bitmap.bmp"); 
} 

固定コード:

using System; 
using System.IO; 
internal class MyClass2 
{ 
    private static readonly string _path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); 
    private Bitmap _bitmap = new Bitmap(_path + "\\" + "Bitmap.bmp"); 
} 

さらに、System.IO.Pathクラスがパスを構築するようにします。

これ以上の静的フィールドは必要ありません。

using System; 
using System.Drawing; 
using System.IO; 
internal class MyClass3 
{ 
    private Bitmap _bitmap = 
     new Bitmap(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Bitmap.bmp")); 
} 
+0

ありがとうございました!しかし、今私は "_bitmapが現在のコンテキストに存在しない" –

関連する問題