2012-09-20 3 views
0

나는 C#을 사용하여 winforms 게임을 만들어야하는 숙제가 있습니다. 사용자 정의 페인트 이벤트와고정 크기의 패널 ​​

  • 패널의 서브 클래스 기본 윈도우 UI 요소와
  • 패널 : 나는 다음과 같은 사항을 가지고있다.

나는 그들과 같이 배치 할 : 나는 수동 중앙 패널에 그리기 때문에

enter image description here

, 나는 그것이 Width, 그리고 Height 고정 설정하려는, 그래서 Form 서브 클래스, 무슨 것이다 그것을 포함하면 전체 패널을 보여줍니다. , I 사상, 폼 크기 존중할 것이다

GamePanel panel = new GamePanel(...); 
panel.Dock = DockStyle.Center; 
this.AutoSize = true; 
this.AutoSizeMode = AutoSizeMode.GrowAndShrink; 
this.Controlls.Add(panel); 

이것을 사용 : 함유 Form에 추가이어서

Width = someFixedWidth; 
Height = someFixedHeight; 

:

나는 패널 서브 수동 크기를 설정하려고 패널의 크기는 작지만 창을 너무 작게 축소하여 보이지 않으며 제목 만 축소합니다.

그럼 내 질문에, 어떻게 수동으로 GamePanel의 크기를 설정할 수 있고 폼의 중앙에 고정 시켜서 폼이 내가 설정 한 크기를 존중하며 그것을 더 작게 만들거나 더 크게 만들까요?

+0

이미 양식 크기를 조정하고 있습니다. 그런 다음 패널을 고정해야하는 이유는 무엇입니까? 양식 크기는 두 패널의 크기 합계와 동일해야합니다. 그래서 나는 그 경우에 왼쪽 또는 오른쪽 여백을 기대하지 않는다. 그렇다면 왜 패널의 도킹이 필요할까요? – Sami

+0

양식에 놓고 모든 앵커를 제거하십시오. – ja72

답변

1

Dock 속성은 컨테이너 (양식)의 크기를 조정할 때 구성 요소의 동작을 정의하는 데 사용됩니다. 화면의 방식에 따라 화면의 크기가 조정되지만 화면의 크기가 변경되는 경우 이상적인 방법은 위치를 변경하는 방법입니다 컨트롤 및 크기를 설정합니다. 보기 :

SuspendLayout(); 

Width = someFixedWidth; 
Height = someFixedHeight; 

panel.Size = new Size(panelWidth, panelHeight); 

panel.Location = new Point(ClientSize.Width/2 - panelWidth/2, ClientSize.Height/2 - panelHeight/2); 
panel.Anchor = AnchorStyles.None; 
panel.Dock = DockStyle.None; 

ResumeLayout(); 
+0

고정 위치이며 un-docking이 문제를 해결했습니다. 나는이 일을하는 더 정교한 방법이 있었지만 winforms 레이아웃 시스템은 매번 나를 놀라게한다. 새로운 것을 발견한다. ( –

0

필자는 필자가 패널의 최소 높이/너비를 편집했으며 효과가있었습니다.

디자인과 관련된 코드를 편집하려고했지만 자동 생성 코드를 다시 작성하지 않는 것이 좋습니다.

감사합니다.

관련 문제