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
Ya que ando como loco metido buscando y solucionando problemas de informática tanto de programación como de TI en general, pondré aquí lo que me ha sido de utilidad y algunas preguntas por si alguno desea ayudamre ;). Espero que yo les sea de ayuda ...
miércoles, 2 de febrero de 2011
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() o 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:
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() o 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:
- En el menú Tools, selecciona Code Snippets Manager co como se ve en la imagen Ctrl+K+B.
- 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.
- 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.
- 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
- 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
Etiquetas:
C#,
instalacion,
Snippets,
Visual Studio
martes, 7 de septiembre de 2010
Snippets Visual Studio
¿Que son los Snippets?
Bueno la pagina de MSDN los describe como:
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

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.
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:
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
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
|
|
Etiquetas:
aprendizaje,
Back to Basics,
C#,
Microsoft,
Programacion
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.
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.
Etiquetas:
.net,
ASP,
C#,
Data Provider,
MySQL,
Unable to find the requested .Net Framework Data Provider
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.
Suscribirse a:
Entradas (Atom)