Anzo Posted August 11, 2016 Share Posted August 11, 2016 Hola, Estoy haciendo un panel en dx y quisiera saber como puedo mover el dx como en el guieditor, no precisamente me lo tienen que hacer, pero si me pueden decir que funciones usar les agradecería. Lo que quiero hacer es que al darle click derecho al dx te salga una opción de ''Cambiar posición del panel'' y si le das click lo puedas mover a donde quieras. Si es muy complicado, diganmelo... Link to comment
Simple02 Posted August 11, 2016 Share Posted August 11, 2016 No es complicado, solo se lleva mucho tiempo desarrollarlo. addEventHandler() removeEventHandler() "onClientClick" "onClientCursorMove" Link to comment
Anzo Posted August 11, 2016 Author Share Posted August 11, 2016 No es complicado, solo se lleva mucho tiempo desarrollarlo. addEventHandler() removeEventHandler() "onClientClick" "onClientCursorMove" Probare más tarde, ahorita no puedo... Igual ya tengo más o menos una idea de como hacerlo con esas funciones. (aunque no sé si vaya a funcionar) Link to comment
Anzo Posted August 12, 2016 Author Share Posted August 12, 2016 Una pregunta, cómo puedo hacer para que un dx se vea en TODAS las resoluciones? yo use esto: local sx, sy= 1280, 1024 local x, y= guiGetScreenSize ( ) dxDrawLine((65 /sourceX )*sx, (746 /sourceY )*sy, (65 /sourceX )*sx, (784 /sourceY)*sy, tocolor(0, 0, 0, 255), 1, false) dxDrawLine((386 /sourceX)*sx, (746 /sourceY )*sy, (65 /sourceX )*sx, (746 /sourceY )*sy, tocolor(0, 0, 0, 255), 1, false) dxDrawLine((65 /sourceX )*sx, (784 /sourceY)*sy, (386 /sourceX)*sx, (784 /sourceY)*sy, tocolor(0, 0, 0, 255), 1, false) dxDrawLine((386 /sourceX)*sx, (784 /sourceY)*sy, (386 /sourceX)*sx, (746 /sourceY )*sy, tocolor(0, 0, 0, 255), 1, false) dxDrawRectangle((65 /sourceX)*sx, (746 /sourceY)*sy, (321 /sourceX)*sx, (38 /sourceY)*sy, tocolor(0, 0, 0, 180), false) dxDrawText("GPS:", (75 - 1 /sourceX)*sx, (759 - 1 /sourceY)*sy, (386 - 1 /sourceX)*sx, (794 - 1 /sourceY)*sy, tocolor(0, 0, 0, 255), 1.00, dxfont0_fontmoney11, "left", "top", false, false, false, true, false) dxDrawText("GPS:", (75 + 1 /sourceX)*sx, (759 - 1 /sourceY)*sy, (386 + 1 /sourceX)*sx, (794 - 1 /sourceY)*sy, tocolor(0, 0, 0, 255), 1.00, dxfont0_fontmoney11, "left", "top", false, false, false, true, false) dxDrawText("GPS:", (75 - 1 /sourceX)*sx, (759 + 1 /sourceY)*sy, (386 - 1 /sourceX)*sx, (794 + 1 /sourceY)*sy, tocolor(0, 0, 0, 255), 1.00, dxfont0_fontmoney11, "left", "top", false, false, false, true, false) dxDrawText("GPS:", (75 + 1 /sourceX)*sx, (759 + 1 /sourceY)*sy, (386 + 1 /sourceX)*sx, (794 + 1 /sourceY)*sy, tocolor(0, 0, 0, 255), 1.00, dxfont0_fontmoney11, "left", "top", false, false, false, true, false) dxDrawText("GPS:", (75 /sourceX)*sx, (759 /sourceY)*sy, (386 /sourceX)*sx, (794 /sourceY)*sy, tocolor(255, 255, 255, 255), 1.00, dxfont0_fontmoney11, "left", "top", false, false, false, true, false) dxDrawLine((70 /sourceX)*sx, (746 /sourceY)*sy, (70 /sourceX)*sx, (787 /sourceY)*sy, tocolor(255, 255, 255, 255), 1, false) Pero solo me aparece donde debe ser en la resolución 1280x1024, en la 1024x768 o 800x600 me aparece más abajo el dx, y aveces, en la resolución donde lo hice (1280x1024) no me aparece el dxText... Link to comment
aka Blue Posted August 12, 2016 Share Posted August 12, 2016 1 = sourceX y sourceY no está definido (o al menos, no lo muestras) 2 = sourceX, sourceY = 1366, 768, lo más recomendable para ese tipo de cálculo que usas 3 = sx, sy = guiGetScreenSize() 4 = De nada. Link to comment
Anzo Posted August 12, 2016 Author Share Posted August 12, 2016 1 = sourceX y sourceY no está definido (o al menos, no lo muestras)2 = sourceX, sourceY = 1366, 768, lo más recomendable para ese tipo de cálculo que usas 3 = sx, sy = guiGetScreenSize() 4 = De nada. Cambie los sourceX y sourceY para 'sx' y 'sy' por que miré un post viejo y lo tenían así, pero me olvide también de cambiar los sourceX/Y a los dx. Me aparecen más abajo los dx ahora: local sourceX, sourceY = 1366, 768 local sx, sy = guiGetScreenSize ( ) dxDrawLine((65 /sourceX )*sx, (746 /sourceY )*sy, (65 /sourceX )*sx, (784 /sourceY)*sy, tocolor(0, 0, 0, 255), 1, false) dxDrawLine((386 /sourceX)*sx, (746 /sourceY )*sy, (65 /sourceX )*sx, (746 /sourceY )*sy, tocolor(0, 0, 0, 255), 1, false) dxDrawLine((65 /sourceX )*sx, (784 /sourceY)*sy, (386 /sourceX)*sx, (784 /sourceY)*sy, tocolor(0, 0, 0, 255), 1, false) dxDrawLine((386 /sourceX)*sx, (784 /sourceY)*sy, (386 /sourceX)*sx, (746 /sourceY )*sy, tocolor(0, 0, 0, 255), 1, false) dxDrawRectangle((65 /sourceX)*sx, (746 /sourceY)*sy, (321 /sourceX)*sx, (38 /sourceY)*sy, tocolor(0, 0, 0, 180), false) dxDrawText("GPS:", (75 - 1 /sourceX)*sx, (759 - 1 /sourceY)*sy, (386 - 1 /sourceX)*sx, (794 - 1 /sourceY)*sy, tocolor(0, 0, 0, 255), 1.00, dxfont0_fontmoney11, "left", "top", false, false, false, true, false) dxDrawText("GPS:", (75 + 1 /sourceX)*sx, (759 - 1 /sourceY)*sy, (386 + 1 /sourceX)*sx, (794 - 1 /sourceY)*sy, tocolor(0, 0, 0, 255), 1.00, dxfont0_fontmoney11, "left", "top", false, false, false, true, false) dxDrawText("GPS:", (75 - 1 /sourceX)*sx, (759 + 1 /sourceY)*sy, (386 - 1 /sourceX)*sx, (794 + 1 /sourceY)*sy, tocolor(0, 0, 0, 255), 1.00, dxfont0_fontmoney11, "left", "top", false, false, false, true, false) dxDrawText("GPS:", (75 + 1 /sourceX)*sx, (759 + 1 /sourceY)*sy, (386 + 1 /sourceX)*sx, (794 + 1 /sourceY)*sy, tocolor(0, 0, 0, 255), 1.00, dxfont0_fontmoney11, "left", "top", false, false, false, true, false) dxDrawText("GPS:", (75 /sourceX)*sx, (759 /sourceY)*sy, (386 /sourceX)*sx, (794 /sourceY)*sy, tocolor(255, 255, 255, 255), 1.00, dxfont0_fontmoney11, "left", "top", false, false, false, true, false) dxDrawLine((70 /sourceX)*sx, (746 /sourceY)*sy, (70 /sourceX)*sx, (787 /sourceY)*sy, tocolor(255, 255, 255, 255), 1, false) Link to comment
aka Blue Posted August 12, 2016 Share Posted August 12, 2016 Te aparecerán debajo ya que les cambiaste las resoluciones. Ahora ya debes ajustarlo manualmente. Link to comment
EstrategiaGTA Posted August 12, 2016 Share Posted August 12, 2016 Además has de tener en cuenta que, por ejemplo, si tú diseñas la posición con respecto a una resolución 4:3 en una 16:9 se verá diferente. Link to comment
Arsilex Posted August 12, 2016 Share Posted August 12, 2016 Yo sinceramente no uso ese método me ya que lo que haces es agrandar o hacer mas pequeño el rectángulo lo que hace que en resoluciones altas o muy bajas se ve muy mal gráficamente. Te sugiero hacerlo en tamaño real al que lo creaste solo usando el método para los posicionamientos. Otra cosa que te sugiero es hacer como unos parent imaginarios es decir poner un cuadrado mas o menos en tu pantalla y de allí ir añadiendo o quitando pixeles es decir en vez de usar toda la pantalla usas solo un pequeño trozo de ella donde irán tus cálculos es decir una cosa asi: local sX, sY = guiGetScreenSize local x = sX/2 - 400 local y = sY/2 - 300 local w = 800 local h = 600 De esa manera solo tendrás que hacer en plan dxDrawRectangle(x, y, w, h, tocolor(255, 0, 0, 255)) dxDrawRectangle(x, y, w, 32, tocolor(0, 0, 0, 255) Es decir estas haciendo un solo calculo para el posicionamiento de tu panel lo que ahora bastantes cuentas a la hora de ejecutar el código dentro de un render ( El código de arriba mejor ponerlo fuera y cambiar desde el script si es necesario cambiando su variable) También esta la manera mas sencilla que es un usando un render y dibujando tu panel en la resolución que tu quieras pero eso suele ser un poco mal gráficamente ya que cuando dibujas algo renderizado lo que hace es pixelizarlo un poco. Espero que te sirva de ayuda. Edito: no te sugiero usar el guieditor si no que crear los paneles paso por paso manualmente te sale mucho mas rápido y mejor posicionado. También te sugiero no usar una resolución fija para eso, es decir como haces que es sourceX = 1366... yo prefiero crear los paneles usando pixeles que yo necesito mas o menos haciendo cuentas un ejemplo podría ser para lineas o cuadrados uso pixeles como 16, 32, 48, 64, 128, 256, 512.... Esto ultimo es solo una manera de hacerlo. NO es obligatorio ni nada de eso hacer esto que yo he dicho pero son unos trucos que yo pienso que vienen bien Link to comment
Anzo Posted August 12, 2016 Author Share Posted August 12, 2016 Yo sinceramente no uso ese método me ya que lo que haces es agrandar o hacer mas pequeño el rectángulo lo que hace que en resoluciones altas o muy bajas se ve muy mal gráficamente. Te sugiero hacerlo en tamaño real al que lo creaste solo usando el método para los posicionamientos.Otra cosa que te sugiero es hacer como unos parent imaginarios es decir poner un cuadrado mas o menos en tu pantalla y de allí ir añadiendo o quitando pixeles es decir en vez de usar toda la pantalla usas solo un pequeño trozo de ella donde irán tus cálculos es decir una cosa asi: local sX, sY = guiGetScreenSize local x = sX/2 - 400 local y = sY/2 - 300 local w = 800 local h = 600 De esa manera solo tendrás que hacer en plan dxDrawRectangle(x, y, w, h, tocolor(255, 0, 0, 255)) dxDrawRectangle(x, y, w, 32, tocolor(0, 0, 0, 255) Es decir estas haciendo un solo calculo para el posicionamiento de tu panel lo que ahora bastantes cuentas a la hora de ejecutar el código dentro de un render ( El código de arriba mejor ponerlo fuera y cambiar desde el script si es necesario cambiando su variable) También esta la manera mas sencilla que es un usando un render y dibujando tu panel en la resolución que tu quieras pero eso suele ser un poco mal gráficamente ya que cuando dibujas algo renderizado lo que hace es pixelizarlo un poco. Espero que te sirva de ayuda. Edito: no te sugiero usar el guieditor si no que crear los paneles paso por paso manualmente te sale mucho mas rápido y mejor posicionado. También te sugiero no usar una resolución fija para eso, es decir como haces que es sourceX = 1366... yo prefiero crear los paneles usando pixeles que yo necesito mas o menos haciendo cuentas un ejemplo podría ser para lineas o cuadrados uso pixeles como 16, 32, 48, 64, 128, 256, 512.... Esto ultimo es solo una manera de hacerlo. NO es obligatorio ni nada de eso hacer esto que yo he dicho pero son unos trucos que yo pienso que vienen bien No entendí mucho... en el x = y = hay que poner la posición del panel? y en el w,h tu resolución? Otra cosa, me descargue un radar y usa este metodo: local sx, sy = guiGetScreenSize() local rt = dxCreateRenderTarget(397, 210) local xFactor, yFactor = sx/1366, sy/768 local yFactor = xFactor --otherwise the radar looses it's 2:3 ratio. dxDrawRectangle((67)*xFactor, sy-((245+10))*yFactor, (344)*xFactor, (226)*yFactor, tocolor(0, 0, 0, 175)) dxDrawImage((67+5)*xFactor, sy-((245+5))*yFactor, (344-10)*xFactor, (226)*yFactor, rt, 0, 0, 0, tocolor(255, 255, 255,255)) Cuál es la diferencia con lo que yo hice? Link to comment
Arsilex Posted August 12, 2016 Share Posted August 12, 2016 en el w, h se pone el tamaño pero si no te lees todo no entenderás para que sirve. Link to comment
Anzo Posted August 12, 2016 Author Share Posted August 12, 2016 en el w, h se pone el tamaño pero si no te lees todo no entenderás para que sirve. Si lo leí, pero no entendí eso de añadir un parent imaginario y añadir/quitar pixeles. Link to comment
Recommended Posts