如何防止在 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。并且有效。
我正在使用 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。并且有效。