2016-08-29 2 views
-2

Я пишу игру, используя winforms C#, При создании сцены (удерживая графику, объекты и т. Д.) Я передаю форму, поэтому c'tor выглядит примерно так:растягивание winform с графикой

public Scene(Form form) 
{ 
    _g = form.CreateGraphics(); 
    RegisterFormEvents(form); 
    _gameObjects = new List<GameObject>(); 
    Width = form.Width; 
    Height = form.Height; 
} 

Теперь я пытаюсь добавить опцию, чтобы показать игру на весь экран, , но когда я пытаюсь увеличить окно печатает только графику оригинала Ширина х Высота, как я могу strecth те?

+1

это потому, что вы уже получаете формы ширины и высоты после того, как вы измените его размер ..where вы получаете и снова присваиваем ширину и высоту .. это не происходит волшебным образом. – MethodMan

+2

Как код использует '_g = form.CreateGraphics()'. Существует очень мало веских причин, по которым вы когда-либо называете «CreateGraphics» и сохраняете такую ​​ссылку. – TnTinMn

+0

'g = form.CreateGraphics();' Это в основном __always__ wrong. Чтобы нарисовать шкалы, вы можете вызвать 'Graphics.ScaleTransform', но вам нужно понять, какой объект« Graphics »использовать в первую очередь и ваш код привязан to fail .. – TaW

ответ

0

Вам остается только послушать событие SizeChanged формы. Всякий раз, когда размер изменился, вы устанавливаете свойства Width и Height сцены в соответствии с новыми измерениями.

Итак, где-то в вашем коде, вы должны иметь следующее:

// I assume that this code is in the code-behind of the form, so "this" is the form 
this.SizeChanged += new EventHandler(FormSizeChanged); 

и

private void FormSizeChanged(object sender, EventArgs e) 
{ 
    yourScene.Width = this.Width; 
    yourScene.Height = this.Height; 
} 
+0

Если я это сделаю, он не будет растягиваться – MjPj

+0

Вы проверили с помощью отладчика, что событие SizeChanged действительно срабатывает, и вы справляетесь с ним правильно? Всякий раз, когда форма максимизируется, ее размер изменяется (если только он не имеет того же размера, который был бы максимальным), и событие срабатывает. Если это не сработает, я подозреваю, что что-то не так с тем, как вы рисуете вещи. – hankide

Смежные вопросы