2012-06-05 2 views

답변

2

마우스 이벤트에서 그림을 걸 겠어요. onpaint 이벤트를 사용하면 좋을 것입니다.

편집 : 여기

은의 OnPaint() 이벤트를 사용 괜찮은 그리기 튜토리얼입니다 : 윈도우가이 양식을 다시 그릴 필요가 복원

http://www.geekpedia.com/tutorial50_Drawing-with-Csharp.html

+0

OnPain이 고통 스럽습니다. 어떤 경우 든 유지 모드 드로잉의 일부 형식이 필요하다고 추가해야합니다. 즉, OnPaint에서 드로잉 할 * * *의 구조적 복사본이 있어야합니다. 이것은 그림을 그리는 메모리의 Bitmap 일 수 있으며 PictureBox로 복사하고 있습니다. 개별 점 또는 해당 궤도의 경로 일 수 있으므로 쉽게 다시 그릴 수 있습니다. 어떤 경우 든 수정 프로그램은 하나의 이벤트 처리기를 다른 이벤트 처리기로 교환하는 것만 큼 사소한 것은 아니며 묻는 사람은 실제로이 사실을 알지 못합니다. – Joey

+0

조이 형을 가리켜 주셔서 고마워요! 좋은 충고도. – Botonomous

+0

@AlesTrunda 5 년 답변 부활 : 죄송 링크가 사망했습니다. – Botonomous

0

. 페인트 이벤트의 일부로 도면이없는 경우 다시 그려지지 않습니다. 다른 사람이 이미 언급했듯이

0

이 질문은 유지 아무것도, 그래픽 객체로 그릴 때 문제가이 일

Saving a Graphics content to a file

매우 유사하다. 영구 그래픽이라고합니다. 때때로 당신은 당신이하지 않는 것보다 더 자주이 행동을 원합니다.

비트 맵 위에 그림을 그린 다음 비트 맵을 그림 상자에 복사해야합니다. 이미지. 다른 대답은 OnPaint 메서드에서 드로잉 루틴을 수행하는 것입니다.

위의 대답을 읽으십시오. 제목은 오해의 소지가 있습니다. 그는 끈기를 얻기 위해 파일에 저장해야한다고 생각했지만, 그렇지 않으면 우리는 그를 보여 줬습니다.

EDIT 여기 내가시킨 이벤트의 변경 후의 상기 링크 바로 사용 mainp.refresh

Bitmap buffer; 
public Form1() 
{ 
    InitializeComponent(); 
    panel1.BorderStyle = BorderStyle.FixedSingle; 
    buffer = new Bitmap(panel1.Width,panel1.Height); 
    //Make sure you resize your buffer whenever the panel1 resizes. 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    using (Graphics g = Graphics.FromImage(buffer)) 
    { 
     g.DrawRectangle(Pens.Red, 100, 100,100,100); 
    } 
    panel1.BackgroundImage = buffer; 
} 
0
내가 가졌다

같은 문제()

mainp이었다 내 패널의 중요 코드 내 모든 그래픽 그리기

관련 문제