如何防止在 RenderWindow 中绘制的图像自动缩放?

How to prevent automatic scaling of my Image drawn inside a RenderWindow?

我正在使用 SFML.Net 2.4 和 C#

我有一个大小为 1000x1000 的 RenderWindow 以这种方式插入到 System.Windows.Forms.Form 中:

public class ViewForm : Form
{
   SFML.Graphics.RenderWindow _renderWindow = null;
   public ViewForm()
   {
      _renderWindow = new RenderWindow(this.Handle);
   }
}

在我的绘图功能中,我只是简单地使用精灵绘制图像:

    _renderWindow.DispatchEvents();
    _renderWindow.Clear(Color.Black);
    Image     img = new Image(path);
    Texture   tex = new Texture(img);
    Sprite    sprite = new Sprite(tex);
    _renderWindow.Draw(sprite);
    _renderWindow.Display();

我的问题是,当显示时,此精灵默认采用最大尺寸(即此处为 1000),而基本图像只有 100 像素高(没有拉伸,但仍然会自动重新缩放)。

我不想自己反转自动缩放...如何保持图像的原始尺寸?


我做了一个测试:为了在 RenderWindow 中正确显示一个 sprite(运行 它自己,这次,没有嵌入到 winform 中),我必须按照这个规则应用一个比例尺:

sprite.Scale = new SFML.System.Vector2f(myScreenWidth / 1000f, myScreenHeight / 1000f);

我的屏幕尺寸是 1920x1080,因此我必须对精灵应用 (1.92 ; 1.08) 的比例...WTF?

问题是我在将其句柄传递给 SFML 后更改了我的 ViewForm 的大小:

new RenderWindow(this.Handle);

我当时在做:

this.Width = (int)finalWidth;
this.Height = (int)finalHeight;

现在,当我的表单改变大小时,我处理然后重新实例化 SFML 的 RenderWindow。并且有效。