0

C#でSFML.Net 2.4を使用しています

この方法で System.Windows.Forms.Form に挿入されたサイズ 1000x1000 の RenderWindow があります。

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?

4

1 に答える 1