Как продолжать движение PictureBox в границах C # Visual Studio 2010 - PullRequest
0 голосов
/ 02 марта 2012

Я пишу заставку с логотипом в Visual Studio 2010, используя C #. Я никогда не писал на C # до сегодняшнего дня, поэтому я прошу прощения за любое невежество в продвинутом. Я импортирую изображение в форму, используя PictureBox. Есть ли способ найти границы PictureBox, чтобы я мог сравнить его с границами экрана (используя screen.Bounds для границ экрана)? Как я уже говорил, я никогда раньше не программировал на C #, поэтому я не уверен, какие другие детали вам понадобятся, если таковые имеются. Пожалуйста, дайте мне знать, и я соберу все, что смогу. Спасибо.

EDIT: Мой метод отказов написан в публичном частичном классе ScreensaverForm. Кадр находится в статическом классе Program. Моя проверка границ в методе bounce - if (picturebox.Bounds.Bottom == this.Bounds.Bottom). Кажется, что это проверяет границы, но границы не являются границами кадра. Как я могу назвать атрибуты кадра?

Ответы [ 3 ]

1 голос
/ 02 марта 2012

Если я что-то упустил.

Получите Screenbounds как Rectangle.

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

даст вам истину, если все это на экране.

0 голосов
/ 02 марта 2012

В дополнение к прекрасному предложению Тони, я хотел бы рассказать о том, как справляться со столкновениями:

Существует четыре границы, поэтому необходимо проверить четыре ситуации.

Возможен горизонтальный и вертикальный отскок одновременно!Поэтому следите за горизонтальной и вертикальной скоростью независимо, горизонтальный отскок повлияет только на горизонтальное движение.

Кроме того, если ваш объект перемещается более чем на один пиксель за раз, вы можете не увидеть точное попадание.(Подобно тому, как координата x вашего блока перемещается непосредственно от 1 до -1, не будучи 0. Таким образом, вы должны проверить, является ли граница на или выше границы, а не просто проверить на.1010 * Хорошей практикой также является проверка на столкновение только при движении к определенной границе. Если вы этого не сделаете, ваше окно может застрять, потому что оно сталкивается с одним и тем же краем после каждого движения.

0 голосов
/ 02 марта 2012

Ваша картинка будет жить в форме.Picturebox имеет границы, которые предоставляют вам верхнее, левое, правое и нижнее значения относительно формы, в которой они содержатся.Отсюда вы можете легко вычислить, находится ли поле рисунка полностью внутри формы или не использовать свойство ширины и высоты формы, предполагая, что верхний левый угол равен 0,0.При перемещении ящика с картинками вы проверяете, что движение, которое вы собираетесь сделать, сохранит его в форме.

...