miércoles, 2 de febrero de 2011

Cortar Imágenes con un rectángulo

Hoy necesitaba cortar una imagen de una fotografía para dejar únicamente la cara de la persona, así que me di a la tare de buscar como cortar la imagen usando un rectangulo dobre un picturebox y recortando pegarlo en otro:


Para Cortar la Imagen se utiliza un rectángulo y en realidad es bastante sencillo de realizar.
Simplemente se utiliza el siguiente código


private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                CordenadaX.Text = e.X.ToString();
                CordenadaY.Text = e.Y.ToString();


                pictureBoxOrigen.Refresh();
                
                int A = 250;
                int B = 50;
                int C = 150;
                int D = 200;
                try
                {
                    A = Convert.ToInt32(CordenadaX.Text);
                    B = Convert.ToInt32(CordenadaY.Text);
                    C = Convert.ToInt32(Largo.Text);
                    D = Convert.ToInt32(Ancho.Text);


                    Bitmap imagen2 = new Bitmap(C, D);
                    Graphics lienzo = Graphics.FromImage(imagen2);


                    Pen cropPen = new Pen(Color.Red, 3);
                    cropPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
                   
                    Rectangle recorte = new Rectangle(A, B, C, D);
                    pictureBox1.CreateGraphics().DrawRectangle(cropPen, recorte);
                    lienzo.DrawImage(pictureBoxOrigen.Image, 0, 0, recorte, GraphicsUnit.Pixel);
                    this.pictureBoxDestino.Image = imagen2;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Surgio un Error: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

Código Completo : Codigo Completo

martes, 11 de enero de 2011

Cargar imágenes en WPF de forma dinamica.

Ya tenia tiempo sin poner nada por falta de tiempo...

Como dice me enfrente a un pequeño problema al intentar cargar un stream directamente sobre un componente System.Windows.Controls.Image al invocar al propiedad Source se requiere un objeto ImageSource, investigando y haciendo pruebas descubri que igual puede usarse un elemento System.Windows.Media.Imaging.BitmapImage, el problema y radicaba en como crear el BitmapImage desde WPF.

Generalmente para trabajar con imágenes windows forms se utiliza un picturebox para el cual   se utiliza System.Windows.Forms.PictureBox.Image el cual es un objeto: System.Drawing.Image para cargar este existen miles de ejemplos en Internet y funciones nativas como System.Drawing.Image.FromFile()System.Drawing.Image.FromStream() los cuales nos facilitan la vida; pues bien me di a la tarea de buscar una solución.

La solución que deduje  en base a códigos y referencias que vi es la siguiente diseñe una función que recibe un objeto de tipo System.Drawing.Imag y devuelve el requerido System.Windows.Media.Imaging.BitmapImage el cual se puede cargar de forma dinámica en el objeto System.Windows.Controls.Imag de WPF.

EJEMPLO:
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            image1.Source = FromStream(System.Drawing.Image.FromFile(@"C:\....\Pictures\666666.jpg"));
            
        }

Lo cual invoca mi solución a groso modo:
        public BitmapImage FromStream(System.Drawing.Image Imagen)
        {
            BitmapImage bmp = new BitmapImage();
            var image = Imagen;
            bmp.BeginInit();
            MemoryStream memoryStream = new MemoryStream();
            image.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Bmp);
            memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
            bmp.StreamSource = memoryStream;
            bmp.EndInit();
            return bmp;
        }
Por cierto es necesario agregar las librerias :

using System.Windows.Forms;
using System.IO;
using System.Drawing;
Agregalas tanto en referencia como en el .CS de tu ventana WPF.

Tambien puede usuarse:

image.Source = new BitmapImage(
          new Uri(@"pack://application:,,,/MyReferencedAssembly/images/Globe.png",
                  UriKind.RelativeOrAbsolute));

jueves, 9 de septiembre de 2010

Instalar Code Snippets

En esta página te explicaré cómo agregar tus code snippets a Visual, para que puedas agregar  nuevos o adaptar algunos de los existentes  y así poder usarlos desde Visual C#.



Instalar los Snippets

Para agregar estos snippets a los que ya tiene Visual Studio, tienes que hacer lo siguiente:
  1. En el menú Tools, selecciona Code Snippets Manager co como se ve en la imagen Ctrl+K+B. 
  2. Te mostrará un cuadro de diálogo desde el que puedes crear nuevas carpetas, añadir snippets existentes, puedes incluso crear directorios para tus snippets en este caso yo agregue la carpeta MySql donde agregare los Snippets que cree para Mysql.
  3. Para iniciar la instalación de los snippets simplemente damos click en el botón "Import...", es  el cual nos abrirá una pantalla para seleccionar los archivos de los Snippes a instalar como podrán ver se pueden seleccionar mas de 1 en cada importación; importante que si deseamos que se instale en una carpeta seleccionemos dicha carpeta antes de pulsar Import.
  4. Como se ve ahora aparecen los snippets seleccionados y seleccionamos del lado derecho en que sub-categorías deseamos que estén disponibles. y damos finalizar
  5. Una ves realizado esto los nuevos snippets estan disponibles.

Con esto hemos terminado en estos dias publicare otra entrada de como hacer los Snippets y subire el archivo de los snippets que hice para MySql






    martes, 7 de septiembre de 2010

    Snippets Visual Studio

    ¿Que son los Snippets?

    Bueno la pagina de MSDN los describe como:
    Los fragmentos de código de IntelliSense son archivos XML con la extensión .snippet que son conformes al esquema XML de fragmentos de código de IntelliSense.En este tema, creará un fragmento de código básico que muestra un cuadro de mensaje.Para obtener más información sobre el esquema XML de fragmentos de código.
    De una forma mas facil de comprender es codigo que puedes tener almacenado para no estar copiando y pegando simplemente lo mandas llamar del almacen y este aparece listo lo unico que tienes que cambiar son los nombre de algunas variables y cosas, para que funcione en tu proyecto.

    El ingresar un Snippet a nuestro proyecto es sencillo solo se da botón derecho y nos muestra la opción aquí están las imagen en VS 2010 y 2008


    Ahora bien agregarlos es sencillo y nos muestra una lista de los Snippets disponibles para su uso





    También pueden ser llamarlos desde el teclado:


    La forma de uso es muy sencilla, por ejemplo, en el caso de un “if”, tecleamos la palabra clave “if” y oprimimos 2 veces la tecla “TAB”. Visual Studio genera automáticamente el bloque y se posiciona dentro del paréntesis (en C#) marcando un rectángulo resaltando el lugar para escribir inmediatamente la condición:



     una vez escrita la condición, basta con teclear “ENTER” y Visual Studio posiciona el cursor en la primera línea dentro del bloque del If si es verdadero y nos perite terminar nuestra programación .

    Para un bloque “try catch” la lógica es similar. Tecleamos “try” y después 2 veces la tecla “TAB”: en este caso, el rectángulo se posiciona en el lugar para teclear el tipo de exepción, igualmente, después de escribir el tipo de exepción, basta con teclear “ENTER” para escribir el código correspondiente.


    Como se puede ver esto tiene un potencial grande para automatizar nuestros desarrollos y terminar mas rápidamente nuestras aplicaciones optimizando los tiempos de desarrollo

    jueves, 1 de julio de 2010

    "Back to Basics" entrenamiento en linea de C#

    Bueno creo que el primer post de este blog fue la oportunida de que Microsoft te diera un servidor por un año gratis reciente recibi un correo de la persona que esta acargo de este proyecto en microsoft donde decia:


    Tú fuiste una de las personas que recibieron servidor, entre los comentarios que me han mandado, el más frecuente ha sido, ¿Cómo puedo comenzar a desarrollar con .NET? y el segundo fue, “Ya tengo mi servidor ¿Ahora qué hago con él? ¿Cómo puedo empezar mi negocio con este servidor?”
    Lo primero es aprender .NET, para eso comenzamos una serie de entrenamientos semanales enfocados a que aprendas los fundamentos de programación, C# y después vamos a grabar algunos videos que te van a ayudar a configurar tu servidor y que puedas comenzar a desarrollar proyectos de alto impacto y venderlos en línea.

    Por lo que ahora microsoft México ha lanzado una serie de entrenamientos vituales en linea denomindos "Back to Basics"; estos entrenamientos pintan bien para personas que inician en esto y no estarian mal que aquellos que saben programar o que alguna ves lo hicieron y no lo recuerdan retomen lo que han olvidado como dice el nombre volver a lo basico no siempre es retroceder si es para mejorar y para reforzar la base de un conocimiento solido.

    Aquii esta la la informacion completa si tienen el server segistrense y si no pues tambien

    Description: http://www.microsoft.com/latam/technet/envios/2010/mai_me_VisualStudio_entrenamientos/mai_me_VisualStudio_entrenamientos.jpg
    Description: http://www.microsoft.com/latam/technet/envios/2010/mai_me_VisualStudio_entrenamientos/izq.jpg
    9 julio - 5:00 a 7:00 pm
    Introducción al desarrollo de aplicaciones Microsoft .NET utilizando Visual Studio 2010 y Visual C#.
    Primera Sesión: Los fundamentos
    En esta sesión se describen los conceptos fundamentales para el desarrollo de aplicaciones Microsoft .NET.

    Los temas que se cubren en esta sesión son:
    • Introducción a la plataforma de desarrollo Microsoft .NET
    • El entorno de desarrollo de Visual Studio 2010
    • Desarrollando aplicaciones Orientadas a Objetos utilizando Visual C#

    Description: Regístrate
    Description: http://www.microsoft.com/latam/technet/envios/2010/mai_me_VisualStudio_entrenamientos/linea.jpg
    16 julio - 5:00 a 7:00 pm
    Introducción al desarrollo de aplicaciones Microsoft .NET utilizando Visual Studio 2010 y Visual C#.
    Segunda Sesión: Construyendo aplicaciones
    En esta sesión se describen algunos de los tipos de aplicaciones principales que podemos desarrollar para la plataforma Microsoft .NET utilizando Visual Studio.

    Los temas que se cubren en esta sesión son:
    • Desarrollo de aplicaciones de escritorio
    • Desarrollo de aplicaciones Web
    • Desarrollo de aplicaciones para dispositivos móviles
    • Desarrollo de aplicaciones de acceso a datos

    Description: Regístrate
    Description: http://www.microsoft.com/latam/technet/envios/2010/mai_me_VisualStudio_entrenamientos/linea.jpg
    23 julio - 5:00 a 7:00 pm
    Introducción al desarrollo de aplicaciones Microsoft .NET utilizando Visual Studio 2010 y Visual C#.
    Tercera Sesión: Arquitectura de software
    En esta sesión se muestran algunos ejemplos de arquitectura de software y patrones de diseño que pueden ser desarrollados utilizando Visual Studio.

    Los ejemplos que se describen en esta sesión son:
    • Programación por capas
    • Modelo Vista Controlador (MVC)
    • Arquitectura orientada a servicios

    Description: Regístrate
    Una vez terminada la sesión podrás volver a consultar estas sesiones en el sitio de Channel9 México.
    Description: http://www.microsoft.com/latam/technet/envios/2010/mai_me_VisualStudio_entrenamientos/channel9.jpg

    martes, 15 de junio de 2010

    Unable to find the requested .Net Framework Data Provider

    Este viernes por la tarde terminado de desarrollar un aplicación web, fui a instalarla en las instalaciones de mi cliente para realizar las pruebas finales y hoo sorpresa me arroja un error extraño que decía mas o menos asi:



    El asunto resultaba interesante ya que tengo otra aplicación web en ejecución en el mismo servidor y se conecta al mismo servidor de Base de datos y esta se ejecuto sin ningún problema...

    Después de mucho buscar, revisar y comparar mi servidor de pruebas con  le de mi cliente resolví el problema. El MySql provider no esta agregado por  defecto en los DBProviderFactories; esto sucede principal mente si usas la  integración de Msyql conector con Visual Studio que también fue la diferencia entre el programa que corría sin broncas y esta nueva aplicación Web. Agregarlo lo hace el instalador de MySqkConnector .NET; el cual tenia instalado en el equipo de pruebas y en mi servidor local pero no en le de mi cliente.

    La solución mas sencilla es conclusión la instalación del conector en el servidor resulta ser la solución mas optima descargando lo de la pagina de Mysql.com ; pero abra lugares que por las reglas del lugar no te permitan la instalación del conector que hacer entonces?, la solución es registrar tu mismo el dataprovider desde el  web.config con el siguiente código:

    <system.data>

        <
    DbProviderFactories>

            <
    add
    name=”MySQL Data Provider” invariant=”MySql.Data.MySqlClient”
    description=”.Net Framework Data Provider for MySQL” type=”MySql.Data.MySqlClient.MySqlClientFactory,
    MySql.Data, Version=5.1.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d”
    />

        </
    DbProviderFactories>

    </system.data>



    Recuerda verificar las versiones del conector, asi como asegurarte de que la dll de MySql.Data se encuentre en la carpeta bin de tu aplicación.

    martes, 8 de junio de 2010

    ASP4 + MVC2: un refresco para el desarrollo web

    ¿Qué herramientas para el desarrollo web estás utilizando actualmente? ¿ASP.NET 2 quizás? Tal vez hace un par de años diste el paso a la 3.5. ¿Continúas programando sólo con Web Forms o ya descubriste MVC? Si hay un escenario dinámico para los desarrolladores, sin dudas es el que gira en torno a Internet. Por eso la ola de innovación que arrancó en Octubre pasado con Windows 7, y hoy nos alcanza con Visual Studio 2010 y Office 2010, no podía llegar sin novedades relacionadas con el desarrollo web. Los snippets de código para controles HTML, JScript y ASP.NET aceleran la construcción de código y hacen que sea más sencillo compartirlo; incluso pueden incluirse desde IntelliSense, que además ha mejorado entre 2 a 5 veces el tiempo de respuesta para manipular JScripts y soporta librerías JQuery. "Web Deployment Tool" te permite empaquetar toda la aplicación web para echarla a correr en IIS rápidamente, ya que incluye todo lo necesario y posibilita publicar en un click. Mientras realizas el deployment, el web.config se va adaptando automáticamente según las configuraciones de los servidores de debugging, stagging y producción. ASP.NET 4 y MVC 2 tienen más novedades para ti. ¡Descarga el instalador de la plataforma Web 2.0 ahora! Y disfruta de esta edición del MSDN Flash.