Skip to content

Instantly share code, notes, and snippets.

@EduardoGV117
Last active March 14, 2024 11:30
Show Gist options
  • Save EduardoGV117/65978ff4ecea6cf6bdeddb1401560c5a to your computer and use it in GitHub Desktop.
Save EduardoGV117/65978ff4ecea6cf6bdeddb1401560c5a to your computer and use it in GitHub Desktop.

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);
    }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment