我正在使用带有 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);
}
}
在我的绘图功能中,我只是使用精灵绘制图像:
_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?