Lalalu Posted April 24, 2019 Share Posted April 24, 2019 (edited) Hola, hago este post por el siguiente motivo. Estoy usando el siguiente código para hacer que una imagen rote constantemente. La cuestión es que quisiera que esta imagen se creara sobre otra imagen, lo que trato de hacer es una especie de ventana a pantalla completa que sería una imagen, y sobre esta imagen se cree el dx de la que rota, ambas cosas funcionan sin embargo no logro hacer que la imagen que rota quede sobre la imagen base, siempre queda por debajo de esta, para la imagen base de pantalla completa debo usar guiCreateStaticImage porque con dx no se adapta a todas las resoluciones. Funcionó cuando usé dx para ambos y lo metí en la misma función pero sucede lo de la resolución, cosa que con guiCreateStaticImage no pasa local rotation = 0 function DxLOAD() rotation = rotation < 360 and rotation + 5 or 0 dxDrawImage(x*1147, y*889, x*105, y*105, "Images/LOAD.png",rotation) end Edited April 24, 2019 by Lalalu Link to comment
aka Blue Posted April 24, 2019 Share Posted April 24, 2019 Lo que tienes que hacer es primero dibujar la imagen base y debajo de esta la imagen que rota. 1 Link to comment
Lalalu Posted April 24, 2019 Author Share Posted April 24, 2019 1 hour ago, aka Blue said: Lo que tienes que hacer es primero dibujar la imagen base y debajo de esta la imagen que rota. Hice exactamente eso mismo también, si lo meto en la misma función funciona perfecto pero crear la imagen base con dx no permite que se adapte a todas las resoluciones como con guiCreateStaticImage y pues no se ve nada bien, y también cree la imagen base primero con guiCreateStaticImage y después la que rota pero pasa lo mismo, aparece debajo de la imagen base Link to comment
TRtam Posted April 25, 2019 Share Posted April 25, 2019 Probaste usando postGUI en la imagen que rota? 1 Link to comment
Lalalu Posted April 25, 2019 Author Share Posted April 25, 2019 10 minutes ago, TRtam said: Probaste usando postGUI en la imagen que rota? Mmm no, ¿como funciona postGUI? Link to comment
TRtam Posted April 25, 2019 Share Posted April 25, 2019 Cada dxDraw function tiene este argumento "postGUI" y la wiki dice que: Quote postGUI: A bool representing whether the image should be drawn on top of or behind any ingame GUI (rendered by CEGUI). 1 Link to comment
aka Blue Posted April 25, 2019 Share Posted April 25, 2019 Para DX debes calcular las posiciones de tal forma que se ajuste a todas las resoluciones. Es algo más complicado que ponerle true al argumento relative de las GUI. Utiliza esto para dx, es lo que utilizo yo y me funciona de maravilla: local sx, sy = guiGetScreenSize() local x, y = ( sx / 1024 ), ( sy / 768 ) -- El 1024 y el 768 lo cambias por el ancho y alto de tu pantalla dxDrawRectangle( x*20, y*100, x*200, y*150, tocolor(255,255,255) ) -- Y para los textos y*escala 1 Link to comment
Lalalu Posted April 25, 2019 Author Share Posted April 25, 2019 Probaré con ese método, lo que sucede es que mi pantalla tiene una resolución no muy común por lo que para poder crear elementos dx o para gui debo cambiar mi resolución a 1280 x 720 o 1980 x 1080, para que pueda adaptarse a las resoluciones más comunes y no solo a la mía, me ha funcionado hasta ahora con todos los elementos DX sin embargo con el de poner el Dx de una imagen a pantalla completa no me ha servido local sx,sy = guiGetScreenSize() --- me funciona con todos los elementos local px,py = 1280,720 local x,y = (sx/px), (sy/py) local x1,y1 = guiGetScreenSize () --- me funciona sólo con los guiStaticImage, con los Dx no (imagen pantalla completa) local factor = x1 / 720 local newY = y1*factor 9 hours ago, aka Blue said: Para DX debes calcular las posiciones de tal forma que se ajuste a todas las resoluciones. Es algo más complicado que ponerle true al argumento relative de las GUI. Utiliza esto para dx, es lo que utilizo yo y me funciona de maravilla: local sx, sy = guiGetScreenSize() local x, y = ( sx / 1024 ), ( sy / 768 ) -- El 1024 y el 768 lo cambias por el ancho y alto de tu pantalla dxDrawRectangle( x*20, y*100, x*200, y*150, tocolor(255,255,255) ) -- Y para los textos y*escala Link to comment
Enargy, Posted April 25, 2019 Share Posted April 25, 2019 Cuando iteras un elemento dx es importante el orden en que está establecido en tu código. Por ejemplo: -- La ultima funcion en iterarse va ser la que va a superponerse a la otra. addEventHandler("onClientRender", root, function() dxDrawImage(0, 0, 50, 50, "imagen.png", 0, 0, 0, tocolor(255, 0, 0, 255), false) dxDrawImage(0, 0, 50, 50, "imagen.png", 0, 0, 0, tocolor(0, 255, 0, 255), false) end ) En el caso de usar el argumento POSTGUI: -- La primera funcion en iterarse va ser la que va a superponerse a todas las demás que las siguen. addEventHandler("onClientRender", root, function() dxDrawImage(0, 0, 50, 50, "imagen.png", 0, 0, 0, tocolor(255, 0, 0, 255), true) dxDrawImage(0, 0, 50, 50, "imagen.png", 0, 0, 0, tocolor(0, 255, 0, 255), false) end ) Ahora con el caso de adaptarse DX Image a todas las resoluciones, al igual que con guiCreateStaticImage, puedes utilizar los porcentajes para que se adapten de igual manera que los static-image. -- Se busca la resolución. local sx, sy = guiGetScreenSize() -- Calcular las posiciones utilizando porcentajes. ejemplo: x=0.5, y=0.5 crea la imagen a partir de la mitad de la pantalla. dxDrawImage(sx * 0.5, sy * 0.5, sx * 0.3, sy * 0.1, "imagen.png") Una forma más accesible sería re definir la misma función dxDrawImage para que se adapte a los porcentajes sin realizar los cálculos uno y otra vez. -- Primero redefinir la función. _dxDrawImage = dxDrawImage local function dxDrawImage(x, y, w, h, ...) local sx, sy = guiGetScreenSize() return _dxDrawImage(x * sx, y * sy, w * sx, h * sy, ...) end -- Luego dibujar addEventHandler("onClientRender", root, function() dxDrawImage(0.5, 0.5, 0.05, 0.05, "imagen.png", 0, 0, 0, tocolor(0, 255, 0, 255), false) dxDrawImage(0.3, 0.5, 0.05, 0.05, "imagen.png", 0, 0, 0, tocolor(255, 255, 0, 255), false) -- Ya como vez no haces el calculo una y otra vez ya que está realizandolo directamente cuando llamas a la función. end ) Puedes utilizar las posiciones del static-image como guía para usarlos en dx-image. 1 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