Girar una imagen con C

Anuncio
Girar una imagen con C#
Aintzane Conde
Girar una imagen con C#
Girar una imagen con C#
Aintzane Conde
Girar una imagen con C#
Se trata de crear una aplicación para poder girar una imagen un ángulo determinado; bien
una única vez, bien con una lista de parámetros (aplicación de una brújula).
Abrimos un nuevo proyecto de Microsoft Visual C# Express 2010.
Girar una imagen con C#
Aintzane Conde
Para realizar esta aplicación debemos añadir al formulario un PictureBox (cuadro de dibujo) desde
el Cuadro de Herramientas, que se encuentra en el lateral izquierdo de la pantalla:
Extendemos el PictureBox hasta que ocupe todo el formulario. Para que este ejemplo dé el
resultado que se ve a continuación, debemos ir a Ver, pinchar en Código y escribir el Código
(en”Ubicación_del_archivo” debemos indicar la Ruta de acceso al archivo deseado).
Girar una imagen con C#
Aintzane Conde
Girar una imagen con C#
Aintzane Conde
Código
using
using
using
using
using
using
using
using
System;
System.Collections.Generic;
System.ComponentModel;
System.Data;
System.Drawing;
System.Linq;
System.Text;
System.Windows.Forms;
using System.Drawing.Drawing2D;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Bitmap Imagen = new Bitmap(@"C:\Ubicación_del_archivo.bmp", true);
float Angulo = 30;
pictureBox1.Image = rotateImage(Imagen, Angulo);
}
private Bitmap rotateImage(Bitmap b, float angle)
{
Bitmap returnBitmap = new Bitmap(b.Width, b.Height);
Graphics g = Graphics.FromImage(returnBitmap);
g.TranslateTransform((float)b.Width / 2, (float)b.Height / 2);
g.RotateTransform(angle);
g.TranslateTransform(-(float)b.Width / 2, -(float)b.Height / 2);
g.DrawImage(b, new Point(0, 0));
return returnBitmap;
}
}
}
También existe la opción de introducir en un Timer la acción de giro de la imagen, construyendo
previamente una lista de valores (alLista es un ArrayList) que representen los ángulos a girar. Se
deberán inicializar k , alLista y Angulo como variable globales:
private void timer1_Tick(object sender, EventArgs e)
{
if (k < alLista.Count)
{
float Angulo = float.Parse(Convert.ToString(alLista[k]));
pictureBox1.Image = rotateImage(Imagen, Angulo);
k = k + 1;
}
else
{
pictureBox1.Image = rotateImage(Imagen, 0);
}
}
Descargar