Pregunta

Estoy tratando de llamar a la panel1 método paint para dibujar el panel con una línea naranja (que se inicia con una línea azul).

He intentado invalidate(), update() y actualizar(), pero nada parece llamar a la pintura evento de panel1...

La pintura de controlador de eventos se han añadido a la panel1:

this.panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.panel1_Paint);

Por favor alguien puede ayudar?

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);

        Form1 testForm = new Form1();
        Application.Run(testForm);

        testForm.drawNewLine();
    }
}

public partial class Form1 : Form
{
    bool blueLine = true;
    bool orangeLine = false;

    public Form1()
    {
        InitializeComponent();
    }

    private void panel1_Paint(object sender, PaintEventArgs e)
    {
        Graphics g = e.Graphics;

        if (blueLine == true)
        {
            Pen bluePen = new Pen(Color.Blue, 3);
            g.DrawLine(bluePen, 30, 50, 30, 250);
        }
        else if (orangeLine == true)
        {
            Pen orangePen = new Pen(Color.Orange, 3);
            g.DrawLine(orangePen, 30, 50, 30, 250);
        }

        g.Dispose();
    }

    public void drawNewLine()
    {
        blueLine = false;
        orangeLine = true;
        //panel1.Invalidate();
        //panel1.Update();
        panel1.Refresh();
    }
}
¿Fue útil?

Solución

Application.Run(testForm); bloquea hasta que está cerrado, así que cuando drawNewLine() se llama de forma no existe (crear un botón que se llama en haga clic en y compruebe usted mismo, el código de trabajo). Invalidate() debería funcionar bien.

Además, no se debe desechar Graphics objeto que se pasa a su código en el evento paint.Que no fueron responsables de la creación, por lo que el código que se creó para destruirlo.

También, disponer Pen los objetos ya que se está creando en ellos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top