示例#1
0
        /// <summary>Pinta una punta de flecha al final del cable.</summary>
        /// <param name="color">El color en el que se pintará la flecha.
        /// </param>

        protected void PintarFlechaFin(EnuColor color)
        {
            int x = puntos.Length;

            PintarFlecha(color, new int[]
                         { puntos[x - 4], puntos[x - 3], puntos[x - 2], puntos[x - 1] });
        }
示例#2
0
        /// <summary>Crea una instancia de la clase.</summary>
        /// <param name="dib">La superfice sobre la que se dibujará
        /// la etiqueta.</param>
        /// <param name="x">La coordenada x de la etiqueta.</param>
        /// <param name="y">La coordenada y de la etiqueta.</param>
        /// <param name="texto">El texto de la etiqueta.</param>
        /// <param name="color">El color en el que se escribirá el texto.
        /// </param>
        /// <param name="centrado>Indica si el texto se mostrará centrado.
        /// </param>

        public Etiqueta
            (InterfaceDibujo dib, int x, int y, String texto,
            EnuColor color, bool centrado) : base(dib)
        {
            this.x        = x;
            this.y        = y;
            this.color    = color;
            this.centrado = centrado;
            this.texto    = texto;
        }
示例#3
0
        /// <summary>Dibuja una recta en la superficie de dibujo.</summary>
        /// <param name="c">El color de la recta.</param>
        /// <param name="x1">La coordenada x del punto inicial de la recta.
        /// </param>
        /// <param name="y1">La coordenada y del punto inicial de la recta.
        /// </param>
        /// <param name="x2">La coordenada x del punto final de la recta.
        /// </param>
        /// <param name="y2">La coordenada y del punto final de la recta.
        /// </param>

        public void DibujarRecta(EnuColor c, int x1, int y1, int x2, int y2)
        {
            lock (this)
            {
                if (pixmap != null)
                {
                    pixmap.DrawLine(GetGC(c), CoordX(x1), CoordY(y1),
                                    CoordX(x2), CoordY(y2));
                }
            }
        }
示例#4
0
        /// <summary> Pinta una punta de flecha al final de la
        /// línea indicada.(Sólo lineas horizontales y verticales).
        /// </summary>
        /// <param name="color">El color en el que se pintará la flecha.
        /// </param>
        /// <param name="linea">Las coordenadas de la linea al fin de la
        /// cual se pondrá la flecha.</param>

        private void PintarFlecha(EnuColor color, int[] linea)
        {
            if (linea.Length != 4)
            {
                return;
            }

            int x1 = 0;
            int x2 = 0;
            int y1 = 0;
            int y2 = 0;

            if (linea[0] == linea[2])             // es una línea vertical
            {
                x1 = linea[0] - 5;
                x2 = linea[0] + 5;

                if (linea[1] < linea[3])                 //La linea va hacia abajo
                {
                    y1 = linea[3] - 5;
                }
                else
                {
                    y1 = linea[3] + 5;
                }
                y2 = y1;
            }
            else if (linea[1] == linea[3])           // es una linea horizontal
            {
                y1 = linea[1] - 5;
                y2 = linea[1] + 5;

                if (linea[0] < linea[2])                 // La linea va hacia la derecha
                {
                    x1 = linea[2] - 5;
                }
                else
                {
                    x1 = linea[2] + 5;
                }
                x2 = x1;
            }
            else
            {
                return;
            }

            dibujo.DibujarRecta(color, linea[2], linea[3], x1, y1);
            dibujo.DibujarRecta(color, linea[2], linea[3], x2, y2);
        }
示例#5
0
        /// <summary>Pinta la linea que compone el cable.</summary>
        /// <param name="color">El color en el que se pintará el cable.
        /// </param>

        private void PintarCable(EnuColor color)
        {
            int x = 0;

            while (x < (puntos.Length - 2))
            {
                int x1 = puntos[x];
                int y1 = puntos[x + 1];
                int x2 = puntos[x + 2];
                int y2 = puntos[x + 3];

                x += 2;
                dibujo.DibujarRecta(color, x1, y1, x2, y2);
            }
        }
示例#6
0
        /// <summary>Dibuja los bordes de un rectángulo en la superficie
        /// de dibujo.</summary>
        /// <param name="c">El color de las líneas del rectángulo.</param>
        /// <param name="x1">La posición x de la esquina superior
        /// izquierda del rectángulo.</param>
        /// <param name="y1">La posición y de la esquina superior
        /// izquierda del rectángulo.</param>
        /// <param name="ancho">El ancho del rectángulo.</param>
        /// <param name="alto">El alto del rectángulo.</param>

        public void DibujarRectangulo
            (EnuColor c, int x1, int y1, int ancho, int alto)
        {
            lock (this)
            {
                if (pixmap != null)
                {
                    pixmap.DrawRectangle(
                        GetGC(c),
                        false,
                        CoordX(x1),
                        CoordY(y1),
                        CoordX(ancho),
                        CoordY(alto));
                }
            }
        }
示例#7
0
        /// <summary>Dibuja un texto en la superficie de dibujo.</summary>
        /// <param name="c">El color del texto.</param>
        /// <param name="x">La posición x del texto.</param>
        /// <param name="y">La posición y del texto.</param>
        /// <param name="texto">El texto a dibujar en la superficie de dibujo.
        /// </param>
        /// <param name="cent">Indica si el texto está centrado (x e y se
        /// refieren al centro del texto) o no (x e y se refieren a la
        /// esquina superior del texto)</param>

        public void DibujarTexto
            (EnuColor c, int x, int y, String texto, bool cent)
        {
            int anc;
            int alt;

            lock (this)
            {
                if (pixmap != null)
                {
                    if (texto != null)
                    {
                        layout.SetText(texto);
                    }
                    else
                    {
                        layout.SetText(" ");
                    }

                    x = CoordX(x);
                    y = CoordY(y);

                    if (cent)
                    {
                        try
                        {
                            layout.GetSize(out anc, out alt);
                        }
                        catch (System.NullReferenceException)
                        {
                            this.layout = new Pango.Layout(this.PangoContext);
                            return;
                        }

                        x = x - (anc / 2200);
                        y = y - (alt / 2200);
                    }
                    pixmap.DrawLayout(GetGC(c), x, y, layout);
                }
            }
        }
示例#8
0
        /// <summary>Nos obtiene el entorno gráfico (Gdk.GC) para el color c.
        /// </summary>
        /// <param name="c">El color.</param>
        /// <returns>El entorno gráfico para ese color.</returns>

        private Gdk.GC GetGC(EnuColor c)
        {
            if (tabla_gc == null)
            {
                tabla_gc = new Gdk.GC[Enum.GetValues(typeof(EnuColor)).Length];

                tabla_gc[(int)EnuColor.Blanco]   = new Gdk.GC(pixmap);
                tabla_gc[(int)EnuColor.Negro]    = new Gdk.GC(pixmap);
                tabla_gc[(int)EnuColor.Rojo]     = new Gdk.GC(pixmap);
                tabla_gc[(int)EnuColor.Verde]    = new Gdk.GC(pixmap);
                tabla_gc[(int)EnuColor.Azul]     = new Gdk.GC(pixmap);
                tabla_gc[(int)EnuColor.Amarillo] = new Gdk.GC(pixmap);

                tabla_gc[(int)EnuColor.Blanco].
                RgbBgColor = GetColor(COLOR_FONDO);
                tabla_gc[(int)EnuColor.Negro].
                RgbBgColor = GetColor(COLOR_FONDO);
                tabla_gc[(int)EnuColor.Rojo].
                RgbBgColor = GetColor(COLOR_FONDO);
                tabla_gc[(int)EnuColor.Verde].
                RgbBgColor = GetColor(COLOR_FONDO);
                tabla_gc[(int)EnuColor.Azul].
                RgbBgColor = GetColor(COLOR_FONDO);
                tabla_gc[(int)EnuColor.Amarillo].
                RgbBgColor = GetColor(COLOR_FONDO);

                tabla_gc[(int)EnuColor.Blanco].
                RgbFgColor = GetColor(EnuColor.Blanco);
                tabla_gc[(int)EnuColor.Negro].
                RgbFgColor = GetColor(EnuColor.Negro);
                tabla_gc[(int)EnuColor.Rojo].
                RgbFgColor = GetColor(EnuColor.Rojo);
                tabla_gc[(int)EnuColor.Verde].
                RgbFgColor = GetColor(EnuColor.Verde);
                tabla_gc[(int)EnuColor.Azul].
                RgbFgColor = GetColor(EnuColor.Azul);
                tabla_gc[(int)EnuColor.Amarillo].
                RgbFgColor = GetColor(EnuColor.Amarillo);
            }
            return(tabla_gc[(int)c]);
        }
示例#9
0
        /// <summary>Transforma un color de EnuColor en un color de
        /// Gdk.Color.</summary>
        /// <param name="c">El color.</param>
        /// <returns>El color en tipo Gdk.Color.</returns>

        private static Gdk.Color GetColor(EnuColor c)
        {
            if (tabla_colores == null)
            {
                tabla_colores =
                    new Gdk.Color[Enum.GetValues(typeof(EnuColor)).Length];

                tabla_colores[(int)EnuColor.Blanco] =
                    new Gdk.Color(255, 255, 255);
                tabla_colores[(int)EnuColor.Negro] =
                    new Gdk.Color(0, 0, 0);
                tabla_colores[(int)EnuColor.Rojo] =
                    new Gdk.Color(255, 0, 0);
                tabla_colores[(int)EnuColor.Verde] =
                    new Gdk.Color(0, 255, 0);
                tabla_colores[(int)EnuColor.Azul] =
                    new Gdk.Color(0, 0, 255);
                tabla_colores[(int)EnuColor.Amarillo] =
                    new Gdk.Color(255, 255, 0);
            }
            return(tabla_colores[(int)c]);
        }
示例#10
0
        /// <summary>Dibuja una punta de flecha al principio del cable.
        /// </summary>
        /// <param name="color">El color en el que se pintará la flecha.
        /// </param>

        protected void PintarFlechaInicio(EnuColor color)
        {
            PintarFlecha(color, new int[]
                         { puntos[2], puntos[3], puntos[0], puntos[1] });
        }