Liq.

Скрипт под любое разрешение экрана

Recommended Posts

Всем привет, столкнулся я вот с какой проблемой. Написал простенький цифровой спидометр и решил проверить его на другом разрешении экрана и результат получился не очень хороший. При этом я использовал guiGetScreenSize(). На первом скрине разрешение экрана 1440х900, на втором 1280х720. Подскажите пожалуйста можно ли как-то исправить такую проблему? Буду очень благодарен!
mta_screen_2018_07_27_13_15_49.png



mta_screen_2018_07_27_13_16_55.png

Share this post


Link to post

какие переменные ты используешь для адаптации под экраны?
В даном случае,можно попробовать
x,y = guiGetScreenSize()
dxDrawText("000",x-300,y-500,0,0)

Share this post


Link to post
12 minutes ago, BrekBerry said:

какие переменные ты используешь для адаптации под экраны?
В даном случае,можно попробовать
x,y = guiGetScreenSize()
dxDrawText("000",x-300,y-500,0,0)

dxDrawText ( "km/h",sX*0.9,sY*0.91,sX*0.9875,sY*0.6066,tocolor(255,255,255,255),fontScale*2,font1,"right","top",false,false,false)

Share this post


Link to post

sX*0.9, именно из-за этого всё и пошло поехало. Ибо ширина экранов разная.

  • dxGetTextWidth позволяет получить ширину текста, может пригодиться.

Или тот же же "km/h" центровать по левой стороне, а спидометр по правой.

  • Like 1

Share this post


Link to post
30 minutes ago, SalwadoR said:

sX*0.9, именно из-за этого всё и пошло поехало. Ибо ширина экранов разная.

  • dxGetTextWidth позволяет получить ширину текста, может пригодиться.

Или тот же же "km/h" центровать по левой стороне, а спидометр по правой.

Я новичок  в скриптинге, можешь на примере моей строки решить проблему я просто не до конца понимаю что да как и если не лень один пример с функцией dxGetTextWidth буду благодарен. Еще вопрос. Ты написал ширина экранов разная, но высота тоже, тогда проблема еще и в  sY*0.91 или я не правильно понимаю?

dxDrawText ( "km/h",sX*0.9,sY*0.91,sX*0.9875,sY*0.6066,tocolor(255,255,255,255),fontScale*2,font1,"right","top",false,false,false)

 

Edited by Liq.

Share this post


Link to post
11 minutes ago, Liq. said:

Я новичок  в скриптинге, можешь на примере моей строки решить проблему я просто не до конца понимаю что да как и если не лень один пример с функцией dxGetTextWidth буду благодарен. Еще вопрос. Ты написал ширина экранов разная, но высота тоже, тогда проблема еще и в  sY*0.91 или я не правильно понимаю?


dxDrawText ( "km/h",sX*0.9,sY*0.91,sX*0.9875,sY*0.6066,tocolor(255,255,255,255),fontScale*2,font1,"right","top",false,false,false)

 

Попробуй вот так:
local screenW,screenH = guiGetScreenSize()
local px,py = 1680,1050
local x,y = (screenW/px), (screenH/py)
dxDrawText ( "km/h",x*956,y*567,x*0,y*0,tocolor(255,255,255,255),fontScale*2,font1,"left","center",false,false,false)
-------------------------------

И центрировать по У(top) не обязательно.

 

Edited by BrekBerry
  • Like 1

Share this post


Link to post
1 hour ago, BrekBerry said:

Попробуй вот так:
local screenW,screenH = guiGetScreenSize()
local px,py = 1680,1050
local x,y = (screenW/px), (screenH/py)
dxDrawText ( "km/h",x*956,y*567,x*0,y*0,tocolor(255,255,255,255),fontScale*2,font1,"left","center",false,false,false)
-------------------------------

И центрировать по У(top) не обязательно.

 

Все сделал проблема осталась такая же. Может масштаб шрифта тоже нужно сделать под любое разрешение ?

Share this post


Link to post
1 minute ago, Liq. said:

Все сделал проблема осталась такая же. Может масштаб шрифта тоже нужно сделать под любое разрешение ?

Ты же для двоих строк так сделал,надеюсь?
Если же всё такие не помогло,попробуй для строки где "km/h", к координате  самого спидометра(000), плюсануть другое,подходящее число.
Пример:
dxDrawText ( "000",x*956,y*567,x*0,y*0,tocolor(255,255,255,255),fontScale*2,font1,"left","center",false,false,false)
dxDrawText ( "km/h",x*956,(y*567)+40*y,x*0,y*0,tocolor(255,255,255,255),fontScale*2,font1,"left","center",false,false,false)
 

Share this post


Link to post

Со слов в самом начале поста:

поменяй

local px,py = 1680,1050

на

local px,py = 1440,900

ИЛИ заменить

dxDrawText ( "km/h",x*956,y*567,x*0,y*0,tocolor(255,255,255,255),fontScale*2,font1,"left","center",false,false,false)

На

dxDrawText ( "km/h",x*956,y*567,x*0,y*0,tocolor(255,255,255,255),fontScale*2,font1,"right","center",false,false,false)

и немного подбора координат тут (значения сделать поменьше) x*956

  • Like 1

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.