我正在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?
答案 0 :(得分:0)
问题是我将ViewForm的句柄传递给SFML后,正在更改其大小:
new RenderWindow(this.Handle);
当时我正在做
:this.Width = (int)finalWidth;
this.Height = (int)finalHeight;
现在,当我的Form更改大小时,我将进行处置,然后重新实例化SFML的RenderWindow。而且有效。