Jump to content

Дада (: фулдилка


Recommended Posts

Привет всем :)

Помогите пожалуйста. Как подогнать gui window или gridlist, и dxDrawText\rectangle под любое разрешение монитора?

На, например, 1600х900 то, что я создаю в guieditor'e, отображается отлично. На 1240х1280, например, окна и текст смещены вправо и вниз, причём dxDrawText расплывчито отображается.

Суперформула

x,y = guiGetScreenSize() 
w,h = x/1600,y/900 

помогает только в правильном расположении и масштабировании gui окон и списков\кнопок, а label'ы и dxDrawText или не изменяется в размере, или отображается не там, где нужно :(

Вот, что я делать пытался:

local x,y = guiGetScreenSize() 
local w,h = x/1600,y/900 
dxDrawText('текст',548.0*w,260.0*h,741.0*w,285.0*h,tocolor(255,255,255,255),1.0,"default-bold","center","center",false,false,true) 

Всё неровно выходит :(

Link to comment
  • Replies 2.4k
  • Created
  • Last Reply

Top Posters In This Topic

я думаю можно использовать что-то типа:

local x,y = guiGetScreenSize() 
dxDrawText('текст',x/2,y/2,w,h,tocolor(255,255,255,255),1.0,"default-bold","center","center",false,false,true) 
--текст создастся по середине, размер задай статический 
  

Edited by Guest
Link to comment

или

  
addEventHandler('ивент',root, 
function() 
local x,y = guiGetScreenSize() 
if (x==1024) and (y==768) then 
dxDrawText('текст',x,y,w,h,tocolor(255,255,255,255),1.0,"default-bold","center","center",false,false,true)--даные которые наиболее подходят-- 
esleif (x==800) and (y==600) then 
dxDrawText('текст',x/2,y/2,w,h,tocolor(255,255,255,255),1.0,"default-bold","center","center",false,false,true)--даные подходящие для разширения 800x600-- 
end 
  
) 
  

Link to comment
Уже есть функция для этого

dxDrawRelativeText

viewtopic.php?f=141&t=33091

Зачем изобретать велосипед?

Вот у тебя - точно велосипед, на котором еще и не поймешь, как ездить. Какие-то 1280x1024, у меня экран широкий, блин. То, что Ethical написал - тоже бог знает что, без бутылки не разберешься. Ящитаю, истинно верный вариант рисования относительными координатами -

w, h = guiGetScreenSize( ) 
dxDrawText("text", w * 0.5, h * 0.5, ...) 

Никаких дополнительных заморочек.

Алсо, что делать, если я буду рисовать в RenderTarget? Рассчеты будут делаться относительно размеров экрана.

Link to comment

640 на 480 и нии_ёт, а когда во временную текстуру рисуешь, только начало координат меняется, если потом эту временную текстуру рисовать не масштабируя. И ваще, какая вам разница, напишите сами своё (:

Link to comment
  • Other Languages Moderators
но ведь сюда заходит русский разработчик, ответь пожалуйста ili Today

Ты думаешь он сидит и ждет пока ты спросишь? Тебе что трудно написать пару предложений по английски хотябы с гугл транслита?

Link to comment
Привет всем! :)

Скажите, каким образом можно вычислить позицию позади игрока на расстоянии 5 метров, например?

local function getPositionFromElementAtOffset ( element, x,y,z ) 
    if not x or not y or not z then  return false  end 
  
    local matrix = getElementMatrix(element) 
  
    local offX = x * matrix[1][1] + y * matrix[2][1] + z * matrix[3][1] + matrix[4][1] 
    local offY = x * matrix[1][2] + y * matrix[2][2] + z * matrix[3][2] + matrix[4][2] 
    local offZ = x * matrix[1][3] + y * matrix[2][3] + z * matrix[3][3] + matrix[4][3] 
  
    return offX, offY, offZ 
end 
  

local x, y, z = getPositionFromElementAtOffset( player, 0, 5, 0 ) 

Link to comment

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.

×
×
  • Create New...