PaintEventArgs is a classSystem.Windows.Forms namespace. 양식 작업을하는 경우 네임 스페이스 및 클래스에 액세스 할 수 있음을 의미하지만 그리려는 코드의 코드에 액세스 할 수는 없습니다.
양식의 소스 코드에 액세스 할 수있는 경우 Paint 이벤트는 공개되어 있으므로 Form 외부의 코드에서 해당 이벤트 핸들러를 등록 할 수 있습니다. (이 문제는 귀하의 문제라고 생각합니다.)
Form에 대한 참조가 있고 페인트 핸들러에 등록한 다음 임의의 그림을 그리는 간단한 예제 클래스를 참조하십시오.
using System;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApplication1 {
class Painter {
public Painter(Form form) {
form.Paint += new PaintEventHandler(form_Paint);
}
void form_Paint(object sender, PaintEventArgs e) {
e.Graphics.DrawLine(Pens.Black, 0, 0, 20, 20);
}
}
}
이 조각에서 중요한 개념은 폼에 대한 참조를 가지고 (또는 제어 파생 개체) 경우 (컨트롤 다시 그리기를해야 할 때마다 자동으로 호출되는 페인트 이벤트에 등록 할 수 있다는 것입니다 그 컨트롤에 원하는 것을 모두 그릴 수 있습니다.)
스 니펫에서 저는 생성자의 Form을 전달하고 거기에 페인트 이벤트로 등록했습니다. 그러나 이것은 간단한 예제를위한 것입니다. 코드의 구조는 다르지만 ... 폼을 가질 것이며 이벤트에 등록한 다음 초기화 단계가있을 것이고 페인팅을 수행하는 메서드를 만들 것입니다.
자신 만의 그래픽 객체를 만들고 처리하여 다른 방법을 그릴 수는 있지만 이는 바람직한 방법은 아닙니다. 하나는 창을 다시 그릴 필요가있을 때 알림을받지 못하고 타이머와 같은 다시 그리기를위한 다른 메커니즘을 만들어야하며 (매우 간단하고보기 흉한 예제처럼) 사용자가 직접 Graphics 개체를 관리해야합니다.