Gw8 Posted June 28, 2017 Share Posted June 28, 2017 -- * Modo porcentagem * ... -- simples metodo que usa um valor real para ser multiplicado por um valor entre 0 e 1, base para entender o calculo: -- temos uma variavel x cujo valor é 500 -- x = 500, multiplicar x*0 = 0, ou x*1 = 500 e por fim x*0.5 = 250. -- continuando .. calculos para escala sX,sY = guiGetScreenSize() -- valor real em pixels x e y do monitor function resX(value) -- (aspectRatio) return (value/1920)*sX -- calculo baseado na resolucao full hd end function resY(value) -- (aspectRatio) return (value/1080)*sY -- calculo baseado na resolucao full hd end -- calculo de escala do texto fonts = {} function dxFont(i) if not fonts[i] then fonts[i] = dxCreateFont("files/font/font.ttf",resX(index),false,"draft") or "default-bold" -- configure com a sua font end return fonts[i] end -- exemplos de como ser usado dxDrawRectangle(sX*0.2,sY*0.2,resX(200),resY(200),tocolor(255,255,255,255)) dxDrawText("test text",sX*0.2,sY*0.2,sX*0.2+resX(200),sY*0.2+resY(200),tocolor(0,0,0,255),1,dxFont(16),"center","center",true) -- * Calculo normal... + - / -- maioria dos scripts que eu vejo sao assim para -- calcular centro do monitor -- sX/2 ou sY/2, ai acabam tipo fazendo o script naquele tamanho em todas as resolucoes.. -- eu tambem fiz um metodo para calcular isso e fazer ele crescer comforme os tamanhos do sY function fixRes(value) local min_ = math.floor(sY/500) local count = 1 if min_ > 1 then count = count + 0.2*min_ end return value*count end -- calculo de escala do texto fonts = {} function dxFont(i) if not fonts[i] then fonts[i] = dxCreateFont("files/font/font.ttf",fixRes(index),false,"draft") or "default-bold" -- configure com a sua font end return fonts[i] end -- exemplos dxDrawRectangle(sX/2-fixRes(100),sY/2-fixRes(100),fixRes(200),fixRes(200),tocolor(255,255,255,255)) dxDrawText("test text",sX/2-fixRes(100),sY/2-fixRes(100),sX/2+fixRes(100),sY/2+fixRes(100),tocolor(0,0,0,255),1,dxFont(16),"center","center",true) -- espero q tenham entendido como eu uso, fiquem avontade para melhorar o sistema e tambem dar dicas onde devo melhorar Vlw Galera! 1 Link to comment
DNL291 Posted June 29, 2017 Share Posted June 29, 2017 Os comentários ajudam a entender o código, mas neste caso, acho que seria melhor você deixar toda explicação fora do código - até pra se adequar ao propósito que é um tutorial. Fora que os comentários dentro do código Lua perdem o destaque e não é o ideal pra alguém enxergar. A propósito, vou falar o método que eu uso, que é mais simples, e ajusta o tamanho sem problemas: -- res: 1280 x 800 local sx,sy = guiGetScreenSize() local tamanho_da_fonte = 2.5 local X, Y = 450, 550 local dxWidth = (sx/1280) * (X + 150) local dxHeight = (sy/800) * (Y + 40) local dxScale = ((sx/1280) / (sy/800)) * tamanho_da_fonte dxDrawText( "Teste", (sx/1280)*X, (sy/800)*Y, dxWidth, dxHeight, tocolor(255,255,255), dxScale, "default-bold", "left", "center" ) Eu defini essas variáveis pra deixar mais fácil de entender, mas recomendo poucas variáveis pra uma melhor performance do script sempre. Pra facilitar mais, você pode definir uma variável pra sx/1280 e sy/800 embaixo da função guiGetScreenSize. 1 1 Link to comment
raynner Posted August 6, 2017 Share Posted August 6, 2017 On 29/06/2017 at 00:45, DNL291 said: Os comentários ajudam a entender o código, mas neste caso, acho que seria melhor você deixar toda explicação fora do código - até pra se adequar ao propósito que é um tutorial. Fora que os comentários dentro do código Lua perdem o destaque e não é o ideal pra alguém enxergar. A propósito, vou falar o método que eu uso, que é mais simples, e ajusta o tamanho sem problemas: -- res: 1280 x 800 local sx,sy = guiGetScreenSize() local tamanho_da_fonte = 2.5 local X, Y = 450, 550 local dxWidth = (sx/1280) * (X + 150) local dxHeight = (sy/800) * (Y + 40) local dxScale = ((sx/1280) / (sy/800)) * tamanho_da_fonte dxDrawText( "Teste", (sx/1280)*X, (sy/800)*Y, dxWidth, dxHeight, tocolor(255,255,255), dxScale, "default-bold", "left", "center" ) Eu defini essas variáveis pra deixar mais fácil de entender, mas recomendo poucas variáveis pra uma melhor performance do script sempre. Pra facilitar mais, você pode definir uma variável pra sx/1280 e sy/800 embaixo da função guiGetScreenSize. Este é apenas para dxDrawText ? Link to comment
DNL291 Posted August 20, 2017 Share Posted August 20, 2017 (edited) On 06/08/2017 at 13:11, raynner said: Este é apenas para dxDrawText ? Funciona pra qualquer coisa (dxDrawRectangle/dxDrawImage). Se você quer manter a proporção da interface independente da resolução, esse método é útil. Edited August 20, 2017 by DNL291 Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now