问题描述
我正在创建一个小的 OpenTK 应用程序,我刚刚注意到窗口的实际宽度和高度添加了一些额外的像素。
我将窗口设置为 400x400,但是当我从屏幕实例的代码中打印宽度和高度时,它说 ClientSize 是 442x442。而且这不是固定的 42 像素,如果我把分辨率提高到 800x800,它就会变成 883x883。为什么会发生这种变化?我找不到任何关于它的信息,甚至在 opentk.net 上也找不到,我查看了源代码,但找不到更改的原因。
解决方法
我一直无法为这个确切的问题找到解决方案,但我发现在 Screen 构造函数中我可以使用行 ClientSize = new System.Drawing.Size(width,height);
并且它会正常工作。
最终结果如下:
using System;
using System.Drawing;
using OpenTK;
using OpenTK.Graphics;
namespace Engine
{
class Screen : GameWindow
{
public Screen(int width,int height,string title) : base(width,height,GraphicsMode.Default,title)
{
// This line will correct the window size to be the one passed to the constructor
ClientSize = new Size(width,height);
}
}
}