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



我正在使用带有C#的SFML.Net 2.4

我有一个大小为1000x1000的RenderWindow插入到System.Windows.Forms.Form中,方法如下:

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

在我的绘图功能中,我只需使用sprite绘制图像:

_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中正确显示精灵(这次是单独运行的,而不是嵌入在winform中(,我必须应用以下规则的比例:

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

我的屏幕大小是1920x1080,因此我不得不对精灵应用(1.92;1.08(的比例。。。WTF?

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

new RenderWindow(this.Handle);

我当时在做:

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

现在,当我的Form更改大小时,我将处理并重新实例化SFML的RenderWindow。它是有效的。

相关内容

  • 没有找到相关文章

最新更新