2011-02-13 3 views
0

C#으로 큐브의 길이를 허용하는 숙제를 위해 Windows Forms 앱을 만들고 있습니다. 그런 다음 입방체의 표면적과 부피를 표시합니다. 그렇게하기는 쉽지만 큐브를 그릴 필요가 있습니다.Windows Forms에서 큐브를 그리는 가장 쉬운 방법은 무엇입니까?

큐브를 그리는 가장 쉬운 방법은 알고 싶습니다. Graphics 클래스로이 작업을 수행해야합니다. 지금까지 작업을 수행하는 방법에 대한

내 생각 :

paper = myPicBox.CreateGraphics(); 
myPen = new Pen(Color.Black); 
myPen.Width = 3; 
paper.DrawRectangle(myPen, xCoord, yCoord, width, height); 
paper.DrawLine(myPen, pointOne, pointTwo); // Then repeat this line for the four lines on the Z-axis 
paper.DrawRectangle(myPen, xCoord, yCoord, width, height); // Where xCoord and yCoord have been changed to be placed at the end of the lines I've drawn 

이 꽤 부피가 큰, 그래서 같은 일을 달성하기 쉽거나 간단한 방법이 있다면 궁금 해서요?

+1

'Paint' 이벤트를 그려야합니다. 'CreateGraphics'를 호출하는 것은 ** 거의 ** 좋은 생각입니다. – SLaks

+0

@ SLaks : 왜 그게? 단, CreateGraphics는 내가 uni에서 배운 모든 것입니다. –

+1

그 이유는'Paint' 이벤트의 * outside *를 그리는 것이 다음에'Paint' 이벤트가 실행될 때 (컨트롤이 다시 그려지는 때마다) 지워지기 때문입니다. 우리가 무엇을 의미하는지 보려면'CreateGraphics'를 사용하여 컨트롤을 그린 다음 폼을 최소화하고 복원하십시오. 귀하의 그래픽은 더 이상 존재하지 않습니다. 드로잉 코드를'Paint' 이벤트에두면 그래픽이 * persistent *인지 확인할 수 있습니다. –

답변

3

앞서 언급했듯이 WinForms를 사용하면 가장 좋습니다. 당신이 할 수있는 최선의 방법은 하나 이상의 큐브를 한 번에 그릴 수 있도록 자신의 기능에 기능을 캡슐화하는 것입니다. 따라서 DrawCube() 메서드는 원점, 길이 및 그래픽 객체를 가져 와서 그릴 수 있습니다. CreateGraphics 호출은 DrawCube를 호출하기 전에 호출됩니다.

또한 Graphics 객체를 완료 한 후 paper.Dispose() (this MSDN page 참조)를 호출하거나 using block에 붙여서 폐기해야합니다. 또한 CreateGraphics를 사용할시기를 설명하는 this website을 확인하십시오 (기본적으로 Paint 이벤트 핸들러 외부에서 작업 할 때)

+0

아, 알겠습니다. 고마워요. 적어도 솔직히 말해서 솔루션을 오히려 간단하게 유지하면서 생각했습니다. –

1

WinForms에서 DrawCube() 메소드로 검색 할 경우 가장 좋은 방법은 .Net에없는 것입니다. 당신이하는 일은 선과 직사각형과 같은 원시 타입들을 사용하는 것입니다.

관련 문제