簡體   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