Programación General > Visual Basic 6.0 e inferiores

 Coordenadas (x,y) cuando escribo en picture

(1/2) > >>

Jimbenit:
Saludos amigos de solocodigo.

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


--- Código: Visual Basic ---Sub Escribir_Texto(PictureKE As PictureBox, Color_PictureKE As Long, TamañoLetra As Integer, _PosX As Single, PosY As Single, Color_Texto As Long, Texto As String)     'Colocamos un punto de igual color del fondo del pictureke, esto hará que el punto se "pierda"    'Esto se hace para ganar la posicion del cursor a la hora de escribir el texto    PictureKE.PSet (PosX, PosY), Color_PictureKE     PictureKE.ForeColor = Color_Texto    PictureKE.FontSize = TamañoLetra    PictureKE.Print Texto End Sub 
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.

Nebire:
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 --- ' elegir una posición x al azar entre 1 y la mitad de la ventana' escribir temperatura en la x elegida ' Ahora consultamos la posición actual.... del cursor En este preciso instante.x = picture1.CurrentXmsgbox x  

Jimbenit:
jajjaja gracias amigo Nebire, pero juraria que con currentx me dio un valor que no esperaba, pero de inmediato reviso...

Nebire:
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 --- Private Sub Form_Load()    Dim x As Long    Me.Show    Picture1.CurrentX = 20    Picture1.Print "Temperatura";      ' el ; indica que continúa en la misma línea...         x = Picture1.CurrentX    picture1.print ' ahora hacemos el retorno de carro... después de haber tomado la posición.    MsgBox xEnd Sub  
2 - Puedes calcular manualmente el 'destino' aunque hubiere saltado de línea, hay 2 propiedades para ello... usamos textwidth...

--- Código: Visual Basic --- Private Sub Form_Load()    Dim x As Long    Me.Show    Picture1.CurrentX = 20    Picture1.Print "Temperatura"   ' hay retorno de carro porque no hay punto y coma..          x = 20 + Picture1.TextWidth("Temperatura") ' le pido la longitud al mismo texto introducido + el desplazamiento previo...    MsgBox xEnd Sub  

Jimbenit:
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 ---Sub Escribir_Texto_ConLinea(PictureKE As PictureBox, Color_PictureKE As Double, TamañoLetra As Integer, _PosX As Single, PosY As Single, Color_Texto As Double, Texto As String, Optional ByRef Delta_X As Single)    Dim Delta_X_OLD As Single    Delta_X_OLD = Delta_X    'Delta_X es la coordenada X donde se termina de escribir la palabra    'Texto es la palabra escrita        PictureKE.PSet (PosX, PosY), Color_PictureKE                PictureKE.ForeColor = Color_Texto    PictureKE.FontSize = TamañoLetra    PictureKE.Print Texto;    Delta_X = PictureKE.CurrentX        If Delta_X < Delta_X_OLD Then        Delta_X = Delta_X_OLD    End If        End Sub 
Luego hago lo siguiente en donde llamo a este procedimiento:

--- Código: Visual Basic ---'INCORPORANDO TEXTOS        Dim XF As Single 'XF almacen al coordenada X despues de escribir el texto        Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, X + 1.25 * Ancho_TOW, Y, Color_Text, "Flow Rate: ", XF)        Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, X + 1.25 * Ancho_TOW, 1.3 * Y, Color_Text, "Temperatura (ºC): ", XF)        Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, X + 1.25 * Ancho_TOW, 1.6 * Y, Color_Text, "Liquid Max Flux : ", XF)        Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, X + 1.25 * Ancho_TOW, 1.9 * Y, Color_Text, "Desired Effluent Oxygen : ", XF)        Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, X + 1.25 * Ancho_TOW, 2.2 * Y, Color_Text, "Desired Effluent CO2 : ", XF)                Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, X + 1.25 * Ancho_TOW, 2.8 * Y, Color_Text, "Diameter : ", XF)        Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, X + 1.25 * Ancho_TOW, 3.1 * Y, Color_Text, "Packing Height : ", XF)        Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, X + 1.25 * Ancho_TOW, 3.4 * Y, Color_Text, "Reservoir : ", XF)        Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, X + 1.25 * Ancho_TOW, 3.7 * Y, Color_Text, "Inlet : ", XF)        Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, X + 1.25 * Ancho_TOW, 4 * Y, Color_Text, "Outlet : ", XF)        Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, X + 1.25 * Ancho_TOW, 4.3 * Y, Color_Text, "Vacuum : ", XF)        Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, X + 1.25 * Ancho_TOW, 4.6 * Y, Color_Text, "Relationship Vaccum : ", XF)        Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, X + 1.25 * Ancho_TOW, 4.9 * Y, Color_Text, "Packing Type : ", XF)                                'Resultados de los textos anteriores        Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, XF + 2 * D_Dist, Y, Color_Resultados, Valor_Flow_Rate & " m^3/s")  'flow rate        Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, XF + 2 * D_Dist, 1.3 * Y, Color_Resultados, Valor_Temperatura & " ºC") 'temperatura        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        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        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                Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, XF + 2 * D_Dist, 2.8 * Y, Color_Resultados, Valor_Diameter & " m") 'diametro        Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, XF + 2 * D_Dist, 3.1 * Y, Color_Resultados, Valor_Packing_Height & " m") 'altura del shell        Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, XF + 2 * D_Dist, 3.4 * Y, Color_Resultados, Valor_Reservoir & " m") 'altura reserva        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 ?        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 ?        Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, XF + 2 * D_Dist, 4.3 * Y, Color_Resultados, Valor_Vacuum & " mm Hg") 'vacuum presion        Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, XF + 2 * D_Dist, 4.6 * Y, Color_Resultados, Valor_Relationship_Vacuum) 'vacuum ralacion        Call Escribir_Texto_ConLinea(PictureKE, Color_PictureKE, 9, XF + 2 * D_Dist, 4.9 * Y, Color_Resultados, Packing_Type) 'Packing type 
y bueno, me funciono bien...  :P

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa