Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Braayhaan en 3 Septiembre 2009, 02:12 am



Título: Ayuda con colores RichTextBox
Publicado por: Braayhaan en 3 Septiembre 2009, 02:12 am
Bueno acá esto pidiendoles ayuda de nuevo xD

Necesito que en un Richtextbox se muestre el texto de distintos colores por ejemplo.

Como el GeSHi de este foro que muestra distintos colores segun el texto.

hay alguna manera de hacerlo?

Todo esto en el VB.NET Claro

Saludos!


Título: Re: Ayuda con colores RichTextBox
Publicado por: seba123neo en 3 Septiembre 2009, 02:19 am
Código
  1. RichTextBox1.SelectionStart = RichTextBox1.Find("Palabra")
  2. RichTextBox1.SelectionColor = Color.Yellow ' El color que quieras



Título: Re: Ayuda con colores RichTextBox
Publicado por: Braayhaan en 3 Septiembre 2009, 04:55 am
Me imagino que eso va en el Rich, o quizás en un timer pero me dice error.

Me dice algo de error valuetype-1 is no correct, o algo del value-1, alguna idea?

echame una mano seba!  :xD


Título: Re: Ayuda con colores RichTextBox
Publicado por: Braayhaan en 3 Septiembre 2009, 05:00 am
Bueno aca les dejo el source haber si me echan una mano ya que no entendi muy bien lo que puso el seba  :-[ me da error

Código
  1. Public Class Form1
  2.  
  3.    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  4.        If RichTextBox1.Text = "" Then
  5.            MessageBox.Show("No se puede compilar un texto vacio")
  6.            Return
  7.        End If
  8.        If SaveFileDialog1.ShowDialog = DialogResult.OK Then
  9.            RichTextBox1.SaveFile(SaveFileDialog1.FileName, RichTextBoxStreamType.PlainText)
  10.            ProgressBar1.Visible = True
  11.            Timer1.Start()
  12.        End If
  13.        Form1.ActiveForm().Text() = "Batch Creator" + SaveFileDialog1.FileName
  14.    End Sub
  15.  
  16.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  17.        If OpenFileDialog1.ShowDialog = DialogResult.OK Then
  18.            RichTextBox1.LoadFile(OpenFileDialog1.FileName, RichTextBoxStreamType.PlainText)
  19.        End If
  20.        Form1.ActiveForm().Text() = "Batch Creator" + OpenFileDialog1.FileName
  21.    End Sub
  22.  
  23.    Private Sub SaveFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles SaveFileDialog1.FileOk
  24. End Sub
  25.  
  26.    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  27.        ProgressBar1.Increment(10)
  28.        If ProgressBar1.Value = ProgressBar1.Maximum Then
  29.            Timer1.Stop()
  30.            MessageBox.Show("Se ha creado satisfactoriamente el archivo .bat en la direccion especificada")
  31.            ProgressBar1.Value = ProgressBar1.Minimum
  32.            ProgressBar1.Visible = False
  33.            Return
  34.        End If
  35.    End Sub
  36.  
  37.    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
  38.        If RichTextBox1.Text = "" Then
  39.            MessageBox.Show("Ya hay un nuevo documento abierto")
  40.            Return
  41.        End If
  42.        Form2.Show()
  43.    End Sub
  44.  
  45.    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
  46.        Form3.SHOW()
  47.    End Sub
  48.  
  49.    Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged
  50.  
  51.    End Sub
  52.  
  53. End Class


Título: Re: Ayuda con colores RichTextBox
Publicado por: seba123neo en 3 Septiembre 2009, 05:38 am
vos preguntaste como se colorea el texto, yo te respondi eso, pero despues no se que hiciste  :xD, el codigo que puse busca "Palabra" en el Richtextbox y lo colorea de amarillo. tambien podes hacerlo con SelectionStart y con SelectionLenght diciendole que desde la posicion 10 hasta la 15 sea de color rojo, de la 16 a la 20 sea azul y asi...ahi en ese codigo que pusiste no veo nada de eso. y no se donde te tira el error. igualmente yo le cambiaria varias cosas a ese codigo.

saludos.


Título: Re: Ayuda con colores RichTextBox
Publicado por: Braayhaan en 3 Septiembre 2009, 14:53 pm
Ese codigo para colorear lo puse en el richtextbox y me da error
Hay les dejo el error que me tira.

(http://i86.servimg.com/u/f86/11/66/25/27/error10.png)

No se que es y al darle a detalles aparecen como 100 lineas con cosas raras :xD

Help me Please ;D


Título: Re: Ayuda con colores RichTextBox
Publicado por: Braayhaan en 3 Septiembre 2009, 15:20 pm
mmm bueno hasta ahora lo resolvi Asi

Código
  1. RichTextBox1.Find("@")
  2. RichTextBox1.SelectionColor = System.Drawing.Color.Yellow

Pero a cada rato que escribo algo se me devuelve a la primera linea me imagino que por eso del .Find

Alguna forma de que lo chequee pero que me deje escribir normal?

Thanks


Título: Re: Ayuda con colores RichTextBox
Publicado por: Zzombi en 3 Septiembre 2009, 22:58 pm
lo otro que podrias hacer es que cuando el richtextbox pierda el foco que se pinte el arroba "@" de color rojo

Código
  1. Private Sub RichTextBox1_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles RichTextBox1.LostFocus
  2.  
  3. RichTextBox1.Find("@")
  4. RichTextBox1.SelectionColor = Color.Red
  5.  
  6. End Sub


Título: Re: Ayuda con colores RichTextBox
Publicado por: Keyen Night en 3 Septiembre 2009, 23:31 pm
Mira yo tengo la solución a ese problema xD yo tambien lo tube pero luego me dio flojera continuar un bat maker que estaba haciendo tambien; suponiendo que tu RichTextBox se llamará r así como el mio mira el evento TextChanged
Código
  1. Private Sub r_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles r.TextChanged
  2.        If r.Find("@echo") <> -1 Then
  3.            r.SelectionStart = r.Find("@echo")
  4.            r.SelectionColor = Color.Red
  5.            r.SelectionStart = r.TextLength
  6.        End If
  7.    End Sub


Título: Re: Ayuda con colores RichTextBox
Publicado por: Braayhaan en 4 Septiembre 2009, 05:53 am
Keyen Night me funciono perfecto el ejemplo pero el detalle es este:

si escribo en la primera linea @ o ECHO o Off solo me marca el primer texto escrito por ejemplo si escribi @ me marca en rojo y si despues de @ escribo ECHO me sigue marcando en rojo,Cuando el codigo de ECHO Es azul y deberia marcar el @ en rojo y el ECHO en Azul.

Pero si doy enter y paso a la siguiente linea me pone el color del Richtextbox original.

Entonces haber si me ayudan  :xD


Título: Re: Ayuda con colores RichTextBox
Publicado por: Keyen Night en 4 Septiembre 2009, 06:53 am
Si tambien me fije de eso habra que buscarle otra solución a eso tambien...


Título: Re: Ayuda con colores RichTextBox
Publicado por: Atrum en 4 Septiembre 2009, 16:02 pm
Pues yo intente hacer un ejemplo, espero sirva, aunque tiene problemas cuando escribes entre texto, podria servir de referencia

Código:
Private Reservadas As String() = _
    {"if", "then", "else", "echo", "@"} 'En este arreglo pones todas las palabras que quieras que aparezcan en color


    Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged
        Dim i As Integer = RichTextBox1.SelectionStart
        Dim ActualCursor As Integer = RichTextBox1.SelectionStart 'recordar el punto de donde se estaba escribiendo
        Dim j As Integer = 0
        If i <> 0 Then 'evitar que el indice se salga del rango
            Do
                i = i - 1 'recorre en reversa hasta encontrar un espacio
                j = j + 1 'cuenta los caracteres de la palabra
            Loop While RichTextBox1.Text(i) <> CChar(" ") And i <> 0 'termina cuando encuentra un espacio
        End If
        Dim substring As String = RichTextBox1.Text.Substring(i, j).Trim() 'obtiene la ultima palabra escrita, quitandole los espacios

        If Reservadas.Contains(substring) Then 'comprobar que la palabra este en la lista
            RichTextBox1.Find(substring, RichTextBoxFinds.Reverse)
            RichTextBox1.SelectionColor = Color.Blue 'Colorea el texto
            RichTextBox1.SelectionStart = ActualCursor
        End If

        RichTextBox1.SelectionColor = Color.Black 'Vuelve al color primario
        RichTextBox1.SelectionStart = ActualCursor
    End Sub

Este codigo esta hecho en Visual studio 2008, espero que no este muy enrredado, espero sirva de algo amigo


Título: Re: Ayuda con colores RichTextBox
Publicado por: Braayhaan en 4 Septiembre 2009, 16:42 pm
Esta exelente Xtriker me funciono perfectamente, algun tip para ponerle mas colores? no solo el azul.

Gracias de antemano  :xD


Título: Re: Ayuda con colores RichTextBox
Publicado por: raul338 en 4 Septiembre 2009, 17:02 pm
Jó!! Xtriker me gano de mano xD xD

logre hacer esto, que solo falla cuando borras todo el texto (por eso el try xD), no titilea cuando tienes un texto muuuy largo ya que solo trabaja en la linea actual. Y tiene para los colores que tu quieras!!!!  ;D


Código
  1. Dim lastPos As Integer ' Donde se estaba escribiendo
  2.    Dim nLine As Integer   ' Linea donde se trabaja
  3.    Dim start As Integer   ' Indice del principio de la linea dentro del texto
  4.    Dim final As Integer   ' Fin de la linea (largo de la linea)
  5.  
  6.    Private Sub rtf_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rtf.TextChanged
  7.        ' "@" se colorea                         (NOTA: Funciona a medias, con el tema
  8.        ' "@asfdasd" : @ se colorea        ( de que si se borra queda el color que estaba)
  9.        colorear("@", Color.Red, False, False)
  10.        ' "echo" se colorea
  11.        ' "malechor" : echo no se colorea
  12.        colorear("echo", Color.Blue, False)
  13.    End Sub
  14.  
  15.    Sub colorear(ByVal clave As String, ByVal color As Color, Optional ByVal spaceAntes As Boolean = True, Optional ByVal spaceDespues As Boolean = True)
  16.        Try
  17.            ' Para recordar en que posicion estaba y no provocar problemas
  18.            lastPos = rtf.SelectionStart
  19.            ' Obtenemos la linea a trabajar
  20.            nLine = rtf.GetLineFromCharIndex(lastPos)
  21.            ' Obtenemos el indice de la linea (indice dentro de todo el texto, no conviene separar la linea en otra variable)
  22.            start = rtf.GetFirstCharIndexOfCurrentLine()
  23.            ' establecemos el limite para buscar la palabra clave
  24.            final = rtf.Lines(nLine).Length
  25.  
  26.            ' Para saber si se tiene que escribir la palabra clave por separado
  27.            If spaceAntes Then clave = " " & clave
  28.            If spaceDespues Then clave = clave & " "
  29.  
  30.            ' Buscamos la palabra clave, si no esta, no hacemos nada
  31.            If Not rtf.Text.IndexOf(clave, start, final) = -1 Then
  32.                rtf.SelectionStart = rtf.Text.IndexOf(clave, start, final)
  33.                rtf.SelectionLength = clave.Length ' Para no colorear demas....
  34.                rtf.SelectionColor = color
  35.            End If
  36.  
  37.            ' Volvemos a donde se estaba escribiendo, y al color normal
  38.            rtf.SelectionStart = lastPos
  39.            rtf.SelectionLength = 0
  40.            rtf.SelectionColor = rtf.ForeColor
  41.        Catch ex As Exception
  42.  
  43.        End Try
  44.    End Sub

Tuve cierto problemita con los espacion, ya que si pones "Mecho" coloreaba "echo" en azul ¬¬ asi que bueno, tuve que ponerle esos parametros opcionales. aunque igual se entiende.....espero que te sirva!!!

Eso si, mi RichTextBox se llama rtf por las dudas  :P

Eso si, quiero estar en los creditos!!!!  ;D ;D ;D

EDIT: agregado comentarios
EDIT 2: probe la solucion de striker pero me tiro error en "Reservadas.Contains" por que no era array o algo asi me dio el error, igual lo suplante por un ForEach y solo me colorea si la palabra esta en la primera linea, no en cualquier otra... u.u


Título: Re: Ayuda con colores RichTextBox
Publicado por: Braayhaan en 4 Septiembre 2009, 17:37 pm
Si me fije en eso del que puso Xtriker solo marca la primera linea, raul el tuyo esta perfecto pero hay alguna forma para ponerlo Asi como el de Xtriker? que se ponian todos los Comandos de Batch en una linea? porque son bastantes y tener que escribir colorear...."del".... es como mucho no xDD.

Disculpen tanto fastidio  :-[ :xD


Título: Re: Ayuda con colores RichTextBox
Publicado por: raul338 en 4 Septiembre 2009, 17:42 pm
jajajaj no seas vago y usa un for each o algo para recorrer un bucle xD
mira, te escribo el codigo a la volada

Código
  1.    Dim palabras as New HashTable()
  2. Public Sub Form_Load(....)....
  3.    palabras.add("@", Color.Red)
  4.    palabras.add("echo", Color.Blue)
  5. End Sub
  6.  
  7. '.....
  8.  
  9. Private Sub rtf_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rtf.TextChanged
  10.    For each s As String In palabras.Keys
  11.        colorear(s, palabras(s))
  12.    Next
  13. End sub
  14.  

no estoy seguro si funciona (dudo dentro del for each), pero bueno, lo acabo de inventar recien, fijate si te sirve


Título: Re: Ayuda con colores RichTextBox
Publicado por: Braayhaan en 4 Septiembre 2009, 18:09 pm
mmm no me funka Raul, bueno de todas formas voy a seguir chequeando por mi cuenta creo que ya los moleste bastante :xD.


Posdata: Felicitaciones es tu mensaje 100!  :xD


Título: Re: Ayuda con colores RichTextBox
Publicado por: Atrum en 4 Septiembre 2009, 18:25 pm
Es curioso como se comporta el RichTextBox con el codigo que utilizé, por que al editar una parte intermedia del texto me selecciona hacia adelante algunos espacios, jeje, y a mi si me funciona en todas las lineas  :huh:  , realmente al leer el post por primera vez crei que seria mas simple, unas 4 lineas y ya, pero resulto interesante intentar, en fin, bueno aqui hay otra idea, aunque tambien tiene varios fallos

Código
  1. Private ReservadasBlue As String() = _
  2.    {"if", "then", "else"} 'En este arreglo pones todas las palabras que quieras que aparezcan en color Azul
  3.  
  4.    Private ReservadasRed As String() = _
  5.    {"echo", "@"} 'En este arreglo pones todas las palabras que quieras que aparezcan en color Rojo
  6.  
  7.    Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged
  8.  
  9.        ' aqui obtiene un arreglo de palabras desde el inicio
  10.        ' hasta donde esta la posicion del cursor
  11.        Dim Palabras As String() = RichTextBox1.Text.Substring(0, RichTextBox1.SelectionStart).Split()
  12.  
  13.        'Aqui obtenemos el ultimo elemento del arreglo de palabras
  14.        Dim UltimaEscrita As String = Palabras(Palabras.Length - 1)
  15.  
  16.        'Guardamos la posicion del cursor
  17.        Dim PosCursor As Integer = RichTextBox1.SelectionStart
  18.  
  19.        'Verificamos si la palabra escrita esta en el el arreglo
  20.        'en este caso declare un arreglo para cada color
  21.        If ReservadasBlue.Contains(UltimaEscrita) Then
  22.            RichTextBox1.Find(UltimaEscrita, RichTextBoxFinds.Reverse)
  23.            RichTextBox1.SelectionColor = Color.Blue
  24.            RichTextBox1.SelectionStart = PosCursor
  25.        End If
  26.  
  27.        'aqui para el color rojo, en caso de añadir mas pues solo seria
  28.        'cosa de agregar mas arreglos y mas condicionales
  29.        If ReservadasRed.Contains(UltimaEscrita) Then
  30.            RichTextBox1.Find(UltimaEscrita, RichTextBoxFinds.Reverse)
  31.            RichTextBox1.SelectionColor = Color.Red
  32.            RichTextBox1.SelectionStart = PosCursor
  33.        End If
  34.  
  35.        'regresamos al color original
  36.        RichTextBox1.SelectionColor = Color.Black
  37.    End Sub
  38.  

El codigo de Raul funciona muy bien, note que parpadea la linea al escribir, y al escribir entre texto no colorea, pero al parecer no nos da los mismos resultados el codigo, sera por aquello de los framework? bueno quien sabe.


Título: Re: Ayuda con colores RichTextBox
Publicado por: Braayhaan en 4 Septiembre 2009, 18:45 pm
LISTOO sin mas problemas Xtriker ya funciona correctamente, gracias a todos por sus respuestas!!!

Saludos, a ambos los pondre en los Creditos  ;)


Título: Re: Ayuda con colores RichTextBox
Publicado por: raul338 en 4 Septiembre 2009, 18:49 pm
Citar
Posdata: Felicitaciones es tu mensaje 100!

jajaja xD...sigamos x los mil!!! xD


Es curioso como se comporta el RichTextBox con el codigo que utilizé, por que al editar una parte intermedia del texto me selecciona hacia adelante algunos espacios, jeje, y a mi si me funciona en todas las lineas  :huh:  , realmente al leer el post por primera vez crei que seria mas simple, unas 4 lineas y ya, pero resulto interesante intentar, en fin, bueno aqui hay otra idea, aunque tambien tiene varios fallos

-------------------------------

El codigo de Raul funciona muy bien, note que parpadea la linea al escribir, y al escribir entre texto no colorea, pero al parecer no nos da los mismos resultados el codigo, sera por aquello de los framework? bueno quien sabe.


no he probado el codigo todavia, aunque ahora no tengo tiempo ,a al tarde volvere  ;D

es verdad, parpadea, pero es por la forma que estamos utilzando (jamas pense q habia que seleccionar para colorear). Aunque la mejor forma (y mas dificil  ;D) de hacerlo es haciendo un control nuevo (tal vez que herede de richtextbox) y dibujar linea por linea con colores y todo ( sobrecargando el metodo OnPaint ). Pero como dije, es la forma mas dificil de hacer: dibujar lineas, dibujar el cursor, las barras de desplazamiento, un lio... xD



Edit: Funciona, aunque no he probado romperlo todavia :laugh: :xD

igual de todas formas, si dices que tiene errores, habra que perfeccionarlos y tal vez hacer una mezcla de codigo entre los 2 jejeje ...


bueno.....suerte entonces...  ;)


Título: Re: Ayuda con colores RichTextBox
Publicado por: raul338 en 4 Septiembre 2009, 22:34 pm
jajajaj no seas vago y usa un for each o algo para recorrer un bucle xD
mira, te escribo el codigo a la volada

Código
  1.    Dim palabras as New HashTable()
  2. Public Sub Form_Load(....)....
  3.    palabras.add("@", Color.Red)
  4.    palabras.add("echo", Color.Blue)
  5. End Sub
  6.  
  7. '.....
  8.  
  9. Private Sub rtf_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rtf.TextChanged
  10.    For each s As String In palabras.Keys
  11.        colorear(s, palabras(s))
  12.    Next
  13. End sub
  14.  

no estoy seguro si funciona (dudo dentro del for each), pero bueno, lo acabo de inventar recien, fijate si te sirve


Ahora (que no me acuerdo porque no lo escribi  :huh:) estaria bueno hacer una especie de IDE simple para varios lenguajes, ej, cuantas veces hemos abierto el tremendo pero algo lento visual studio para probar unas simples lineas. Con "nuestro" pequeño IDE se podria hacer simple jejeje....x eso implemente la opcion de cualquier color. Es buena idea, alguien se prende??? (se une?)


Título: Re: Ayuda con colores RichTextBox
Publicado por: Braayhaan en 4 Septiembre 2009, 22:40 pm
Yo me apunto! al diseño y parte del codigo  :P


Título: Re: Ayuda con colores RichTextBox
Publicado por: seba123neo en 5 Septiembre 2009, 02:41 am
jajajaj no seas vago y usa un for each o algo para recorrer un bucle xD
mira, te escribo el codigo a la volada

Código
  1.    Dim palabras as New HashTable()
  2. Public Sub Form_Load(....)....
  3.    palabras.add("@", Color.Red)
  4.    palabras.add("echo", Color.Blue)
  5. End Sub
  6.  
  7. '.....
  8.  
  9. Private Sub rtf_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rtf.TextChanged
  10.    For each s As String In palabras.Keys
  11.        colorear(s, palabras(s))
  12.    Next
  13. End sub
  14.  

no estoy seguro si funciona (dudo dentro del for each), pero bueno, lo acabo de inventar recien, fijate si te sirve


Ahora (que no me acuerdo porque no lo escribi  :huh:) estaria bueno hacer una especie de IDE simple para varios lenguajes, ej, cuantas veces hemos abierto el tremendo pero algo lento visual studio para probar unas simples lineas. Con "nuestro" pequeño IDE se podria hacer simple jejeje....x eso implemente la opcion de cualquier color. Es buena idea, alguien se prende??? (se une?)

queres hacer un parser de los colores de cada lenguaje, hay un monton de ejemplos en internet de ese tipo de proyecto.


Título: Re: Ayuda con colores RichTextBox
Publicado por: raul338 en 5 Septiembre 2009, 17:23 pm
jajajaj no seas vago y usa un for each o algo para recorrer un bucle xD
mira, te escribo el codigo a la volada

Código
  1.    Dim palabras as New HashTable()
  2. Public Sub Form_Load(....)....
  3.    palabras.add("@", Color.Red)
  4.    palabras.add("echo", Color.Blue)
  5. End Sub
  6.  
  7. '.....
  8.  
  9. Private Sub rtf_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rtf.TextChanged
  10.    For each s As String In palabras.Keys
  11.        colorear(s, palabras(s))
  12.    Next
  13. End sub
  14.  

no estoy seguro si funciona (dudo dentro del for each), pero bueno, lo acabo de inventar recien, fijate si te sirve


Ahora (que no me acuerdo porque no lo escribi  :huh:) estaria bueno hacer una especie de IDE simple para varios lenguajes, ej, cuantas veces hemos abierto el tremendo pero algo lento visual studio para probar unas simples lineas. Con "nuestro" pequeño IDE se podria hacer simple jejeje....x eso implemente la opcion de cualquier color. Es buena idea, alguien se prende??? (se une?)

queres hacer un parser de los colores de cada lenguaje, hay un monton de ejemplos en internet de ese tipo de proyecto.

puede ser, pero un coloreador de lenguajes no puede ser considerado IDE,  aparte de colorear se podria hacer una "simulacion" (copia xD) de Intellisense y compilar el codigo (solo en .net, ya que en otros lenguajes necesitamos un compilador jejej)


Título: Re: Ayuda con colores RichTextBox
Publicado por: jgzunigah en 25 Febrero 2010, 06:02 am
hola vieras que estoy con un problema muy similar pero resulta que si le doy un enter la palabra que quiero que cambie de color no cambia alguien me podria decir como se puede resolver esto

(http://C:\Users\Josué\Pictures\Dibujo.JPEG)