Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用图形拉伸winform_C#_Winforms_Graphics - Fatal编程技术网

C# 用图形拉伸winform

C# 用图形拉伸winform,c#,winforms,graphics,C#,Winforms,Graphics,我在用c的winforms写一个游戏, 当创建场景(包含图形、对象等)时,我正在传输表单,以便c'tor看起来像这样: public Scene(Form form) { _g = form.CreateGraphics(); RegisterFormEvents(form); _gameObjects = new List<GameObject>(); Width = form.Width; Height = form.Height; }

我在用c的winforms写一个游戏, 当创建场景(包含图形、对象等)时,我正在传输表单,以便c'tor看起来像这样:

public Scene(Form form)
{
    _g = form.CreateGraphics();
    RegisterFormEvents(form);
    _gameObjects = new List<GameObject>();
    Width = form.Width;
    Height = form.Height;
}
公共场景(表单)
{
_g=form.CreateGraphics();
注册活动(表格);
_gameObjects=新列表();
宽度=形式宽度;
高度=形式高度;
}
现在我正在尝试添加一个全屏显示游戏的选项, 但当我试图最大化窗口时,它只将图形打印到原始宽度x高度,
我怎样才能播放这些内容呢?

你只需收听表单中的事件即可。只要更改了大小,就可以设置场景的宽度和高度属性以匹配新的尺寸

因此,在代码的某个地方,您应该具有以下内容:

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


这是因为在调整窗体大小后,您已经获得了窗体的宽度和高度。您将从何处获取并再次指定宽度和高度。。这不会神奇地发生。代码如何利用
\u g=form.CreateGraphics()
。很少有正当理由让您调用
CreateGraphics
并保留这样的引用。
g=form.CreateGraphics()这基本上总是错误的。要绘制比例,可以调用
Graphics.ScaleTransform
,但首先需要了解要使用哪个
Graphics
对象,并且代码肯定会失败。如果我这样做,这不会影响您是否已使用调试器检查SizeChanged事件是否实际触发,并且您是否正确处理了它?每当窗体被最大化时,它的大小都会发生变化(除非它恰好已经与最大化时的大小相同),事件就会触发。如果这样不行,我怀疑你画东西的方式有问题。
private void FormSizeChanged(object sender, EventArgs e)
{
    yourScene.Width = this.Width;
    yourScene.Height = this.Height;
}