Domanda

Nel mio strumento che uso un pannello per cambiare pagina. Ogni pagina ha il proprio pannello e quando cambio una pagina io mando il pannello con i comandi. Sul pannello che uso come la tela ho il seguente evento vernice:

    private void panelContent_Paint(object sender, PaintEventArgs e)
    {
        e.Graphics.CompositingQuality = CompositingQuality.HighQuality;
        e.Graphics.SmoothingMode = SmoothingMode.HighQuality;

        // Paints a border around the panel to match the treeview control
        e.Graphics.DrawRectangle(Pens.CornflowerBlue,
            e.ClipRectangle.Left,
            e.ClipRectangle.Top,
            e.ClipRectangle.Width - 1,
            e.ClipRectangle.Height - 1);

        e.Graphics.Flush();

        base.OnPaint(e);
    }

Questo metodo disegna fondamentalmente un bel bordo attorno il pannello in modo che un aspetto migliore. Per qualche ragione quando mi muovo un altro modulo qui sopra questo pannello le linee che compongono il confine cominciano a correre un po '. Di tanto in tanto piccole linee saranno disegnate dal confine troppo. Il problema solo per alcuni secondi prima che l'intero pannello ridisegna nuovamente. C'è qualcosa che posso fare per evitare che ciò accada?

È stato utile?

Soluzione

ClipRectangle ti dice quello che parte del controllo ha bisogno di essere ridipinto. Se si sta spostando qualcosa su di esso, questo è probabilmente sarà l'intersezione del vostro oggetto e quella in corso spostati. È possibile utilizzare queste informazioni per ridisegnare in modo più efficiente il vostro controllo.

Probabilmente si vuole disegnare il rettangolo da (0, 0) a (panelContent.Width-1, panelContent.Height-1).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top