using Microsoft.VisualBasic.Devices; using System.Drawing.Drawing2D; namespace ExamenU2Graficacion { public partial class Form1 : Form { private Point[] puntos; // Variable para almacenar los puntos del polígono private int offsetX = 0; // Desplazamiento en el eje X private int offsetY = 0; // Desplazamiento en el eje Y private int desplazamiento = 10; // Cantidad de píxeles para desplazar el polígono private bool isDragging = false; // Variable para indicar si se está arrastrando el PictureBox private Point clickPoint; // Punto inicial del clic para arrastrar private double anguloRotacion = 0; private Bitmap bitmap; Bitmap para dibujar el polígono
public Form1()
{
InitializeComponent();
// Inicializar el PictureBox
bitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);
}
private void DibujarPoligono(int n)
{
puntos = new Point[n];
// Calcular las coordenadas de los puntos del polígono
for (int i = 0; i < n; i++)
{
double angulo = 2 * Math.PI * i / n;
double radio = 100;
puntos[i] = new Point((int)(Math.Cos(angulo) * radio) + offsetX, (int)(Math.Sin(angulo) * radio) + offsetY);
}
// Dibujar el polígono en el bitmap
using (Graphics g = Graphics.FromImage(bitmap))
{
g.Clear(pictureBox1.BackColor);
g.DrawPolygon(new Pen(Color.Black), puntos);
g.FillPolygon(new SolidBrush(Color.Red), puntos);
}
// Mostrar el bitmap en el PictureBox
pictureBox1.Image = bitmap;
}
private void btnCrear_Click(object sender, EventArgs e)
{
int n = int.Parse(Microsoft.VisualBasic.Interaction.InputBox("Introduzca el número de lados del polígono:", "Número de lados"));
DibujarPoligono(n);
}
private void Trasladar(int deltaX, int deltaY)
{
offsetX += deltaX;
offsetY += deltaY;
DibujarPoligono(puntos.Length);
}
private void Rotar(double angulo)
{
anguloRotacion += angulo;
DibujarPoligono(puntos.Length);
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void btnarriba_Click(object sender, EventArgs e)
{
Trasladar(0, -desplazamiento);
}
private void btnderecha_Click(object sender, EventArgs e)
{
Trasladar(desplazamiento, 0);
}
private void btnizquierda_Click(object sender, EventArgs e)
{
Trasladar(-desplazamiento, 0);
}
private void btnabajo_Click(object sender, EventArgs e)
{
Trasladar(0, desplazamiento);
}
// Método para trasladar el polígono hacia la izquierda
private void TrasladarIzquierda()
{
for (int i = 0; i < puntos.Length; i++)
{
puntos[i] = new Point(puntos[i].X - desplazamiento, puntos[i].Y);
}
pictureBox1.Refresh(); // Limpiar el PictureBox y redibujar el polígono trasladado
DibujarPoligono(puntos.Length);
}
// Método para trasladar el polígono hacia la derecha
private void TrasladarDerecha()
{
for (int i = 0; i < puntos.Length; i++)
{
puntos[i] = new Point(puntos[i].X + desplazamiento, puntos[i].Y);
}
pictureBox1.Refresh(); // Limpiar el PictureBox y redibujar el polígono trasladado
DibujarPoligono(puntos.Length);
}
// Método para trasladar el polígono hacia arriba
private void TrasladarArriba()
{
for (int i = 0; i < puntos.Length; i++)
{
puntos[i] = new Point(puntos[i].X, puntos[i].Y - desplazamiento);
}
pictureBox1.Refresh(); // Limpiar el PictureBox y redibujar el polígono trasladado
DibujarPoligono(puntos.Length);
}
// Método para trasladar el polígono hacia abajo
private void TrasladarAbajo()
{
for (int i = 0; i < puntos.Length; i++)
{
puntos[i] = new Point(puntos[i].X, puntos[i].Y + desplazamiento);
}
pictureBox1.Refresh(); // Limpiar el PictureBox y redibujar el polígono trasladado
DibujarPoligono(puntos.Length);
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (isDragging)
{
int deltaX = e.X - clickPoint.X;
int deltaY = e.Y - clickPoint.Y;
offsetX += deltaX;
offsetY += deltaY;
clickPoint = e.Location;
DibujarPoligono(puntos.Length);
}
}
private void pictureBox1_Move(object sender, EventArgs e)
{
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
isDragging = false;
}
}
private void pictureBox1_MouseEnter(object sender, EventArgs e)
{
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
isDragging = true;
clickPoint = e.Location;
}
}
private void openFileDialog1_FileOk(object sender, System.ComponentModel.CancelEventArgs e)
{
}
private void btnCargar_Click(object sender, EventArgs e)
{
}
private void btnizquierda_Click_1(object sender, EventArgs e)
{
Trasladar(-desplazamiento, 0);
}
private void btnderecha_Click_1(object sender, EventArgs e)
{
Trasladar(desplazamiento, 0);
}
private void btnarriba_Click_1(object sender, EventArgs e)
{
Trasladar(0, -desplazamiento);
}
private void btnabajo_Click_1(object sender, EventArgs e)
{
Trasladar(0, desplazamiento);
}