Принудительное изменение размера на 8 - PullRequest
0 голосов
/ 12 сентября 2011

У меня есть пара разделенных панелей, вложенных друг в друга.Проблема в том, что я рендерил 8x8 плиточную игру внутри центральной панели.По сути, высота и ширина панели должны быть нечетными, кратными 8, чтобы я мог легко найти центральную плитку.

Я использую VB.net, поэтому все решения .net приемлемы:)

РЕДАКТИРОВАТЬ извините, это немного сбивало с толку ...

Я имею в виду, мне нужно, чтобы ширина и высота делились на 8. Число 8 умножается набыть нечетным:

ИЗМЕНИТЬ СНОВА эти цифры ниже не относятся к размеру.Они относятся к двум умноженным числам.Я изменил их на *, чтобы показать это.Эти цифры ниже относятся как к высоте, так и к ширине.Одно число должно быть нечетным, другое 8. 8 * x

5 * 8 - Хорошо

6 * 8 - Плохо

Ответы [ 2 ]

1 голос
/ 12 сентября 2011

Вы можете проверить, не странно ли что-то, выполнив мод 2 с номером.Так что просто сделай

if number mod 2 == 1:
   code for board
0 голосов
/ 12 сентября 2011

Вы заявили, что вам нужно, чтобы и высота, и ширина делились на 8, но в вашем примере только высота делится на нее. в любом случае, вот один из способов сделать это:

поместите это в обработчик события изменения размера:

Dim Height as Integer = SplitControl1.Panel1.Width
    If Height mod 8 <> 0 then
  Height -= (Height mod 8)
End If

Height += 9 //This ensures that the Height is not 0 and still is divisible by 8 + 1 (to be odd)

и

Dim Width as Integer = SplitControl1.Panel1.Width
If Width mod 8 <> 0 then
   Width -= (Width mod 8)
End If

Width += 9 //This ensures that the Width is not 0 and still is divisible by 8 + 1 (to be odd)

наконец

SplitControl1.Panel1.Width = Width
SplitControl1.Panel1.Height = Height
...