繁体   English   中英

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

[英]How to prevent automatic scaling of my Image drawn inside a 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);
   }
}

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

    _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。 而且有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM