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?