2012-03-02 2 views
0

C#을 사용하여 Visual Studio 2010에서 튀는 로고 화면 보호기를 쓰고 있습니다. 나는 오늘 전에 C#으로 글을 쓰지 않았다. 그래서 나는 진보 된 무지를 사과한다. PictureBox를 사용하여 양식으로 이미지를 가져옵니다. PictureBox의 경계를 찾을 수있는 방법이 있나요 (화면 경계선에 대해 screen.Bounds 사용) 화면의 경계를 비교할 수 있습니까? 내가 말했듯이, 나는 C#으로 프로그래밍 한 적이 없기 때문에 필요한 경우 다른 세부 사항이 무엇인지 확실하지 않습니다. 나에게 알려 줘서 내가 할 수있는대로 올려 놓을거야. 고맙습니다.경계에서 PictureBox를 계속 움직이는 방법 C# Visual Studio 2010

편집 : 내 바운스 방법은 공개 부분 클래스 ScreensaverForm으로 작성됩니다. 프레임은 정적 클래스 프로그램에 있습니다. 반송 방법의 경계 체크는 if (picturebox.Bounds.Bottom == this.Bounds.Bottom)입니다. 이것은 경계를 검사하는 것처럼 보이지만 경계는 프레임의 경계가 아닙니다. 프레임 속성을 어떻게 호출합니까?

+0

C#으로 프로그래밍하지 않았지만 적어도 당신이 시도했는지/googled했는지 보여줄 필요가있다. – deltree

+0

나 자신보다 앞서 간 것으로 보인다. PictureBox.Bounds.Top == this.Bounds.Top을 테스트 해봤지만, 나는 Point (x, y)를 만들고 있다고 생각했지만, 네 잘못이야. 그냥 요점을 고정. 돌아가서 테스트 할 것입니다. – spassen

+0

몇 가지 테스트를 마치면 picturebox.bounds.top == this.bounds.top이 닫힌 것 같습니다. 이 대신 프레임 테두리를 사용해야합니다. 바운스 방법 및 프레임 작성 코드는 별도의 장소에서 수행됩니다. 바운스 메서드는 정적 부분 클래스 인 ScreensaverForm에서 만들어지며 프레임은 정적 클래스 프로그램에서 만들어집니다. 반송 방법에서 프레임 속성에 어떻게 액세스합니까? – spassen

답변

1

내가 놓친 게 아니라면.

Screenbounds를 Rectangle으로 받으십시오.

screenrectangle.Contains(new Rectangle(MyPictureBox.Location, MyPictureBox.Size)) 

이 화면에 모두 표시되면 사실을 제공합니다.

+0

방향을 바꿀 수 있도록 어떤 경계가 있는지 알아야합니다. 그렇게 할 수있는 방법이 있습니까? – spassen

+0

나는 이것을 오해하고 있을지 모르지만, 이것이 경계에 있는지 아닌지를 알려주는 것처럼 보입니다. 이것은 내가 특정한 경계를 치고 있는지 말해주지 않습니다. – spassen

+1

글쎄 만약 당신이 경계에 있었고 당신이 움직이면 당신이되지 않을 것입니다 ... 당신이 움직이는 방향을 알고 있는지에 달렸지 만 MyPictureBox.Location.X + MyPictureBox.Size.Width> Screen.Bounds.Right 또는 some 그런 ... –

0

당신의 picturebox는 형태로 살 것입니다. picturebox는 그것이 들어있는 양식을 기준으로 위쪽, 왼쪽, 오른쪽 및 아래쪽 값을 제공하는 테두리가 있습니다. 거기에서 그림 상자가 양식 내에 완전히 포함되어 있는지 또는 양식의 너비 및 높이 속성을 사용하지 않고 쉽게 계산할 수 있습니다 (왼쪽 상단 구석이 0,0이라고 가정). 당신이 picturebox를 움직일 때 당신이하려고하는 움직임이 폼 안에있는 picturebox를 유지할 것임을 확인합니다.

0

토니의 훌륭한 제안뿐만 아니라, 나는 충돌을 처리하는 방법을 ADRESS 싶습니다 :

네 경계가있다, 그래서 확인하는 네 가지 경우가 있습니다.

동시에 수평 및 수직 바운스가 가능합니다! 따라서 수평 및 수직 속도를 독립적으로 추적하면 수평 바운스가 수평 모션에만 영향을 미칩니다.

또한 개체가 한 번에 둘 이상의 픽셀을 이동하면 정확한 히트가 표시되지 않을 수 있습니다. (마찬가지로 그 X 그래서 당신은 경계 단지에 대한 테스트하지, 경계 또는 이상 경우 테스트해야 0을하지 않고 -1 1에서 직접 이동하여 상자의 좌표입니다.

을 또한 좋은 특정 경계쪽으로 이동할 때만 충돌을 확인하는 연습. 매 이동 후 동일한 가장자리와 충돌하여 창문이 걸릴 수 있습니다.