OpenTK 为窗口增加了额外的宽度和高度

问题描述

我正在创建一个小的 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);
        }
    }
}