• Viernes 29 de Marzo de 2024, 16:53

Autor Tema:  Coordenadas (x,y) cuando escribo en picture  (Leído 4239 veces)

Jimbenit

  • Miembro MUY activo
  • ***
  • Mensajes: 269
  • Nacionalidad: co
    • Ver Perfil
    • http://ingenieriacivil.foroactivo.com
Coordenadas (x,y) cuando escribo en picture
« en: Miércoles 21 de Julio de 2010, 22:43 »
0
Saludos amigos de solocodigo.

Mi duda es cuando escribo en un picture por medio del siguiente sub:

Código: Visual Basic
  1. Sub Escribir_Texto(PictureKE As PictureBox, Color_PictureKE As Long, TamañoLetra As Integer, _
  2. PosX As Single, PosY As Single, Color_Texto As Long, Texto As String)
  3.  
  4.     'Colocamos un punto de igual color del fondo del pictureke, esto hará que el punto se "pierda"
  5.     'Esto se hace para ganar la posicion del cursor a la hora de escribir el texto
  6.     PictureKE.PSet (PosX, PosY), Color_PictureKE
  7.  
  8.     PictureKE.ForeColor = Color_Texto
  9.     PictureKE.FontSize = TamañoLetra
  10.     PictureKE.Print Texto
  11.  
  12. End Sub
  13.  

Necesito saber la coordenada x una vez termino de escribir en el picture.
La siguiente imagen explica mejor lo que deseo:


En la imagen, yo escribo en el picture en la coordenada (x,y), alli empiezo a escribir la palabra "Temperatura", una vez termino de escribir, el cursor se desplaza automaticamente a la derecha cada vez que escribe las letras de la palara "Temperatura", la pregunta es:
Como saber cual es la distancia que se desplazo el cursor cuando termino de escribir " Temperatura"?
es decir, Como saber cual es la nueva coordenda (X + delta X , Y)?
siendo delta X la distancia de la palabra "Temperatura" ?


Alguna idea?

Saludos.


Yo quiero mucho a Toph ---> Mi Web]http://ingenieriacivil.foroactivo.com[/url]

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Coordenadas (x,y) cuando escribo en picture
« Respuesta #1 en: Sábado 24 de Julio de 2010, 20:23 »
0
En un momento que tengo...
A ver Nilson, esto no debería serte a estas alturas problemático...

Sea que estamos pintando en un picture1...
Código: Visual Basic
  1.  
  2. ' elegir una posición x al azar entre 1 y la mitad de la ventana
  3. ' escribir temperatura en la x elegida
  4.  
  5. ' Ahora consultamos la posición actual.... del cursor En este preciso instante.
  6. x = picture1.CurrentX
  7. msgbox x
  8.  
  9.  
«Ma non troppo»
----> ModoVacaciones = False<----

Jimbenit

  • Miembro MUY activo
  • ***
  • Mensajes: 269
  • Nacionalidad: co
    • Ver Perfil
    • http://ingenieriacivil.foroactivo.com
Re: Coordenadas (x,y) cuando escribo en picture
« Respuesta #2 en: Sábado 24 de Julio de 2010, 20:42 »
0
jajjaja gracias amigo Nebire, pero juraria que con currentx me dio un valor que no esperaba, pero de inmediato reviso...


Yo quiero mucho a Toph ---> Mi Web]http://ingenieriacivil.foroactivo.com[/url]

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Coordenadas (x,y) cuando escribo en picture
« Respuesta #3 en: Sábado 24 de Julio de 2010, 21:10 »
0
Claro, puede darte un valor que no esperas, porque debes tener en cuenta el factor de escala del picture...

Además debes tener en cuenta si haces un retorno de carro o no. Recuerda que un retorno de carró sucede tras un picture1.print "hola" , luego al hacer un retorno de carro currentx vuelve a valer 0.

Hay 2 soluciones dependiendo de qué te veas forzado a elegir:
1 - no hacer el retorno de carro en este momento, sino más tarde
Código: Visual Basic
  1.  
  2. Private Sub Form_Load()
  3.     Dim x As Long
  4.     Me.Show
  5.     Picture1.CurrentX = 20
  6.     Picture1.Print "Temperatura";      ' el ; indica que continúa en la misma línea...
  7.          x = Picture1.CurrentX
  8.     picture1.print ' ahora hacemos el retorno de carro... después de haber tomado la posición.
  9.     MsgBox x
  10. End Sub
  11.  
  12.  

2 - Puedes calcular manualmente el 'destino' aunque hubiere saltado de línea, hay 2 propiedades para ello... usamos textwidth...
Código: Visual Basic
  1.  
  2. Private Sub Form_Load()
  3.     Dim x As Long
  4.     Me.Show
  5.     Picture1.CurrentX = 20
  6.     Picture1.Print "Temperatura"   ' hay retorno de carro porque no hay punto y coma..
  7.           x = 20 + Picture1.TextWidth("Temperatura") ' le pido la longitud al mismo texto introducido + el desplazamiento previo...
  8.     MsgBox x
  9. End Sub
  10.  
  11.  
«Ma non troppo»
----> ModoVacaciones = False<----

Jimbenit

  • Miembro MUY activo
  • ***
  • Mensajes: 269
  • Nacionalidad: co
    • Ver Perfil
    • http://ingenieriacivil.foroactivo.com
Re: Coordenadas (x,y) cuando escribo en picture
« Respuesta #4 en: Martes 27 de Julio de 2010, 17:48 »
0
Ya las probe y funcionan excelente, me gusto mucho el metodo textwidth para este caso...
Que te puedo decir?, muchas gracias amigo Nebire  :good:



Código: Visual Basic
  1. Sub Escribir_Texto_ConLinea(PictureKE As PictureBox, Color_PictureKE As Double, TamañoLetra As Integer, _
  2. PosX As Single, PosY As Single, Color_Texto As Double, Texto As String, Optional ByRef Delta_X As Single)
  3.     Dim Delta_X_OLD As Single
  4.     Delta_X_OLD = Delta_X
  5.     'Delta_X es la coordenada X donde se termina de escribir la palabra
  6.    'Texto es la palabra escrita
  7.    
  8.     PictureKE.PSet (PosX, PosY), Color_PictureKE
  9.    
  10.    
  11.    
  12.     PictureKE.ForeColor = Color_Texto
  13.     PictureKE.FontSize = TamañoLetra
  14.     PictureKE.Print Texto;
  15.     Delta_X = PictureKE.CurrentX
  16.    
  17.     If Delta_X < Delta_X_OLD Then
  18.         Delta_X = Delta_X_OLD
  19.     End If
  20.    
  21.    
  22. End Sub
  23.  

Luego hago lo siguiente en donde llamo a este procedimiento:
Código: Visual Basic
  1. 'INCORPORANDO TEXTOS
  2.         Dim XF As Single 'XF almacen al coordenada X despues de escribir el texto
  3.         Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, X + 1.25 * Ancho_TOW, Y, Color_Text, "Flow Rate: ", XF)
  4.         Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, X + 1.25 * Ancho_TOW, 1.3 * Y, Color_Text, "Temperatura (ºC): ", XF)
  5.         Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, X + 1.25 * Ancho_TOW, 1.6 * Y, Color_Text, "Liquid Max Flux : ", XF)
  6.         Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, X + 1.25 * Ancho_TOW, 1.9 * Y, Color_Text, "Desired Effluent Oxygen : ", XF)
  7.         Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, X + 1.25 * Ancho_TOW, 2.2 * Y, Color_Text, "Desired Effluent CO2 : ", XF)
  8.        
  9.         Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, X + 1.25 * Ancho_TOW, 2.8 * Y, Color_Text, "Diameter : ", XF)
  10.         Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, X + 1.25 * Ancho_TOW, 3.1 * Y, Color_Text, "Packing Height : ", XF)
  11.         Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, X + 1.25 * Ancho_TOW, 3.4 * Y, Color_Text, "Reservoir : ", XF)
  12.         Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, X + 1.25 * Ancho_TOW, 3.7 * Y, Color_Text, "Inlet : ", XF)
  13.         Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, X + 1.25 * Ancho_TOW, 4 * Y, Color_Text, "Outlet : ", XF)
  14.         Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, X + 1.25 * Ancho_TOW, 4.3 * Y, Color_Text, "Vacuum : ", XF)
  15.         Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, X + 1.25 * Ancho_TOW, 4.6 * Y, Color_Text, "Relationship Vaccum : ", XF)
  16.         Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, X + 1.25 * Ancho_TOW, 4.9 * Y, Color_Text, "Packing Type : ", XF)
  17.        
  18.        
  19.        
  20.         'Resultados de los textos anteriores
  21.         Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, XF + 2 * D_Dist, Y, Color_Resultados, Valor_Flow_Rate & " m^3/s")  'flow rate
  22.         Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, XF + 2 * D_Dist, 1.3 * Y, Color_Resultados, Valor_Temperatura & " ºC") 'temperatura
  23.         Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, XF + 2 * D_Dist, 1.6 * Y, Color_Resultados, Valor_Liquid_Max_Flux & " Kg/m^2/s") 'liquid Max Flux
  24.         Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, XF + 2 * D_Dist, 1.9 * Y, Color_Resultados, Valor_Desired_Effluent_Oxygen & " mg/L") 'desired oxygen
  25.         Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, XF + 2 * D_Dist, 2.2 * Y, Color_Resultados, Valor_Desired_Effluent_CO2 & " mg/L") 'desired co2
  26.        
  27.         Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, XF + 2 * D_Dist, 2.8 * Y, Color_Resultados, Valor_Diameter & " m") 'diametro
  28.         Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, XF + 2 * D_Dist, 3.1 * Y, Color_Resultados, Valor_Packing_Height & " m") 'altura del shell
  29.         Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, XF + 2 * D_Dist, 3.4 * Y, Color_Resultados, Valor_Reservoir & " m") 'altura reserva
  30.         Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, XF + 2 * D_Dist, 3.7 * Y, Color_Resultados, Valor_inlet & " m^3") 'entrada de liquido ??? es m^3 ?
  31.         Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, XF + 2 * D_Dist, 4 * Y, Color_Resultados, Valor_Outlet & " m^3") 'salida de liquido ??? es m^3 ?
  32.         Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, XF + 2 * D_Dist, 4.3 * Y, Color_Resultados, Valor_Vacuum & " mm Hg") 'vacuum presion
  33.         Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, XF + 2 * D_Dist, 4.6 * Y, Color_Resultados, Valor_Relationship_Vacuum) 'vacuum ralacion
  34.         Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, XF + 2 * D_Dist, 4.9 * Y, Color_Resultados, Packing_Type) 'Packing type
  35.  

y bueno, me funciono bien...  :P


Yo quiero mucho a Toph ---> Mi Web]http://ingenieriacivil.foroactivo.com[/url]

Jimbenit

  • Miembro MUY activo
  • ***
  • Mensajes: 269
  • Nacionalidad: co
    • Ver Perfil
    • http://ingenieriacivil.foroactivo.com
Re: Coordenadas (x,y) cuando escribo en picture
« Respuesta #5 en: Miércoles 28 de Julio de 2010, 00:59 »
0
Gracias Nebire  B)

(posteo de nuevo, para que veas los resultados ya que edite el post   :P )


Yo quiero mucho a Toph ---> Mi Web]http://ingenieriacivil.foroactivo.com[/url]