Я использую SFML.Net 2.4 с C #
У меня есть RenderWindow размером 1000x1000, вставленное в 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?