heos666 Posted April 11, 2023 Share Posted April 11, 2023 По документации нашел код как сделать свой Splash Screen, и не могу понять как изменить разрешение изображения EngineWindow main_window = WindowManager.MainWindow; if (!main_window) { Engine.Quit(); return false; } ivec2 main_size = main_window.Size; vec4 transform = new vec4(1.0f, 1.0f, 0.0f, 0.0f); LoadingScreen.Enabled = true; LoadingScreen.Transform = transform; LoadingScreen.TexturePath = "Logo.png"; LoadingScreen.Text = "<xy x=\"%50\" dx=\"0\" y=\"%50\" dy=\"0\"/>LOADING_PROGRESS"; int duration = 5; DateTime begin = DateTime.Now; while (DateTime.Now.Subtract(begin).TotalSeconds < duration) LoadingScreen.Render((int)(DateTime.Now.Subtract(begin).TotalSeconds / duration * 100.0f)); LoadingScreen.Enabled = false; Link to comment
thomalex Posted April 12, 2023 Share Posted April 12, 2023 Добрый день, @heos666, Чтобы установить точное разрешение изображения загрузочного экрана, нужно вместо LoadingScreen.TexturePath = "Logo.png"; загрузить изображение вручную, сменить ему разрешение и установить при помощи SetImage(): Image screen_image = new Image("Logo.png"); screen_image.Resize(main_size.x, main_size.y * 2); // высота x2, т.к. сплэш состоит из двух половин LoadingScreen.SetImage(screen_image); Но если вам нужно только изменить масштаб изображения, достаточно поправить трансформацию: vec4 transform = new vec4(1.0f, 1.0f, 0.0f, 0.0f); Где, если не ошибаюсь, первые 2 компонента представляют масштаб по ширине и высоте (но с учетом сохранения соотношения сторон), а вторые — выравнивание по горизонтали и вертикали (напр. [0.0f; 0.0f] — левый верхний угол, [1.0f; 1.0f] — правый нижний). Спасибо! Link to comment
heos666 Posted April 12, 2023 Author Share Posted April 12, 2023 2 hours ago, thomalex said: Добрый день, @heos666, Чтобы установить точное разрешение изображения загрузочного экрана, нужно вместо LoadingScreen.TexturePath = "Logo.png"; загрузить изображение вручную, сменить ему разрешение и установить при помощи SetImage(): Image screen_image = new Image("Logo.png"); screen_image.Resize(main_size.x, main_size.y * 2); // высота x2, т.к. сплэш состоит из двух половин LoadingScreen.SetImage(screen_image); Но если вам нужно только изменить масштаб изображения, достаточно поправить трансформацию: vec4 transform = new vec4(1.0f, 1.0f, 0.0f, 0.0f); Где, если не ошибаюсь, первые 2 компонента представляют масштаб по ширине и высоте (но с учетом сохранения соотношения сторон), а вторые — выравнивание по горизонтали и вертикали (напр. [0.0f; 0.0f] — левый верхний угол, [1.0f; 1.0f] — правый нижний). Спасибо! Теперь изображение разделилось на две части и поочередно показывает сначала верхнюю потом нижнюю часть Link to comment
thomalex Posted April 12, 2023 Share Posted April 12, 2023 5 minutes ago, heos666 said: Теперь изображение разделилось на две части и поочередно показывает сначала верхнюю потом нижнюю часть... Это вполне ожидаемое поведение. Для экрана загрузки нужно подготовить изображение, состоящее из двух частей — для начального состояния (сверху) и конечного (снизу), блендинг между ними происходит по альфа каналу в соответствии с прогрессом загрузки. В этом видеоуроке можно ознакомиться со всеми аспектами. Спасибо! 1 Link to comment
Recommended Posts