Blog alskare

.Net y lo que surja

Escribir texto en una fotografía

Posted by alskare en 26/08/2009

En más de una ocasión he tenido la necesidad de añadir algún texto dentro de una fotografía, bien sea como marca de agua para subir las fotos a un servidor o, sencillamente, para incluir algún tipo de información en la misma fotografía.

Siempre había realizado esta acción en VisualBasic, pero en esta ocasión he tenido que hacerlo en C# así que, siguiendo la costumbre, dejo aquí el trabajo. Tal como está la clase en estos momentos, reconozco que está muy verde, puesto que, sin problemas, pueden añadirse multitud de servicios que la harían mucho más funcional, pero deja bien asentadas las bases de la escritura de un texto dentro de la foto.

 

using System.Drawing;

namespace jnSoftware.Utiles.Fotos
{

    public class Foto
    {
        #region Campos 
        private Bitmap _foto = null;
        private int _posicion_izquierda = 2;
        private int _posicion_arriba = 2;
        private Brush _pincel = Brushes.White;
        private int _tamanoFuente = 100;
        private string _nombreFuente = "Tahoma";
        #endregion 


        #region Propiedades

        /// <summary>
        /// Obtiene o establece el pincel (color del texto)
        /// </summary>
        public Brush Pincel
        {
            get { return _pincel; }
            set { _pincel = value; }
        }
    

        /// <summary>
        /// Obtiene o establece el tamaño de letra
        /// </summary>
        public int Tamano
        {
            get { return _tamanoFuente; }
            set { _tamanoFuente = value; }
        }


        /// <summary>
        /// Obtiene o establece la distancia existente entre el borde izquierdo de la 
        /// foto y el principio del texto
        /// </summary>
        public int PosicionIzquierda
        {
            get { return _posicion_izquierda; }
            set { _posicion_izquierda = value; }
        }


        /// <summary>
        /// Obtiene o establece la distancia existente entre el borde superior de la 
        /// foto y el principio del texto
        /// </summary>
        public int PosicionArriba
        {
            get { return _posicion_arriba; }
            set { _posicion_arriba = value; }
        }

        #endregion


        #region Constructores
        /// <summary>
        /// Constructor - Instancia la clase con una nueva fotografía
        /// </summary>
        /// <param name="foto">Fotografía a retocar</param>
        public Foto(Bitmap foto)
        {
            _foto = foto;
        }

        /// <summary>
        /// Constructor - Instancia la clase con un fichero 
        /// </summary>
        /// <param name="foto">Ruta completa del fichero gráfico a retocar</param>
        public Foto(string foto)
        {
            _foto = new Bitmap(foto);
        }
        #endregion 




        /// <summary>
        /// Obtiene la foto con las modificaciones 
        /// </summary>
        /// <returns></returns>
        public Bitmap GetFoto()
        {
            return _foto ;
        }



        /// <summary>
        /// Escritura de la cadena de texto sobre la foto.
        /// </summary>
        /// <param name="cadena"></param>
        public void EscribeTexto(string cadena)
        {
            // La clase Graphics encapsula una superficie de dibujo de GDI+. 
            Graphics g = Graphics.FromImage(_foto);
            // Se crea un PointF para posicionar el texto
            PointF posicion = new PointF( _posicion_izquierda, _posicion_arriba);
            // Fuente
            Font fuente = new Font(_nombreFuente, _tamanoFuente);
            // Se escribe la cadena de texto en la fotografía
            g.DrawString(cadena, fuente, _pincel, posicion);
        }


    }
}

Sorry, the comment form is closed at this time.

 
A %d blogueros les gusta esto: