2011-01-26 6 views
0

서클 오브젝트를 생성하여 속도로 화면에 놓고 테두리 내에서 바운스 시키려고합니다. 원 클래스를 설정할 수는 있지만 객체를 그리는 방법 (나중에 여러 개를 클릭하고 말하면 더 많은 원 객체를 얻을 수 있습니다)과 동작을 표시하려면 어떻게해야합니까?오브젝트를 만들고 이동하는 동안 페인트하는 방법은 무엇입니까?

+0

이 특정 하위 주제의 많은 광범위한 질문의 종류 무승부 로직을 추가 할 수 있습니다. 질문을 분리하여보다 집중된 질문으로 나누고 싶을 수도 있습니다. – asawyer

+0

WinForms, APS, WPF 또는 Silverlight를 사용하고 있습니까? –

+0

이것은 WinForms에 있습니다. – akd

답변

2

드로잉은 .NET (WFA, WPF 및 XNA 프레임 워크)에서 적어도 3 가지 방법으로 수행 할 수 있습니다. 이 대답을 위해 가장 간단한 WinForms 앱을 사용하고 있다고 가정합니다.

.NET에서 사용자 정의 모양을 그리거나 페인팅하는 작업은 Graphics 클래스를 사용하여 수행됩니다. 모든 폼 컨트롤에는 CreateGraphics() 메서드가 있습니다.이 메서드는 메서드를 호출 한 컨트롤의 크기와 위치가있는 화면의 "상자"에 대한 참조를 제공합니다. 그 Graphics 인스턴스를 사용하여 다양한 그리기 방법 (예 : DrawCircle())을 호출하여 화면에 도형을 넣을 수 있습니다. Pen, BrushColor 개체를 읽어야합니다. 원의 테두리, 채우기 및 색상을 정의 할 수 있습니다. 컨트롤의 OnPaint() 메서드에 드로잉 논리를 배치 할 것이고,이 메서드는 창에 다시 그리기를 요청할 때마다 호출됩니다. 일정한 간격으로 개체를 이동하려면 일정한 간격으로 Timer을 설정하고 이동 논리를 수행 할 처리기로 Tick 이벤트를 구독하십시오. 이동을 한 후에는 그래픽 핸들이있는 컨트롤에서 Invalidate()으로 전화하십시오. 컨트롤 자체가 다시 그려집니다. 그래픽을 전체 폼 또는 다른 중첩 컨트롤을 배치 할 컨트롤을 얻는 피할 것입니다. 자체를 다시 그리는 컨트롤은 중첩 된 모든 컨트롤에 다시 그리기를 지시하기 때문입니다. 양식 창에서 스팬을 차지하는 Panel 또는 PictureBox은 사용자 지정 그래픽의 이동 방법입니다. BufferedGraphicsContext 개체를 사용하여 이중 버퍼링 그래픽을 구현하거나 에 대한 이미지로 설정 한 Bitmap에서 사용자 정의 모양을 그려서 자신을 롤링하는 것도 고려해 볼 수 있습니다.

양식에 최우선 OnPaint 메서드와
3

시작을하는 것은이

protected override void OnPaint(PaintEventArgs e) 
{ 
    e.Graphics.DrawEllipse(new Pen(Color.Red), 0, 0, 100, 100); 
} 
관련 문제