2016-10-18 2 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

코드를 메서드에 넣어야합니다. 생성자에 추가 할 수 있습니다. 그래서 라인을 개인용 비트 맵 비트로 변경 = null; 생성자에서 비트 추가 = 새 비트 맵 (경로 + "\\"+ "Bitmap.bmp"); – jdweng

+0

고맙지 만 비주얼 스튜디오는 "유형 또는 네임 스페이스 정의 또는 끝점을 말하는"메서드 나 함수에 비트 맵 비트 = 새 비트 맵 (경로 + "\\"+ "Bitmap.bmp")을 넣으려고 할 때마다 오류가 발생합니다. of-file expected "또 다른 '}'iv가 또 다른 '}'을 추가 했음에도 불구하고"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이 현재 컨텍스트에 존재하지 않습니다." –

관련 문제