Окрашенные границы проходит в определенных ситуациях - PullRequest
0 голосов
/ 16 февраля 2010

В моем инструменте я использую панель для смены страниц. Каждая страница имеет свою собственную панель, и когда я меняю страницу, я отправляю панель с элементами управления. На панели, которую я использую в качестве холста, у меня есть следующее событие рисования:

    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);
    }

Этот метод в основном рисует красивую границу вокруг панели, чтобы она выглядела лучше. По какой-то причине, когда я перемещаю другую форму над этой панелью, линии, составляющие границу, начинают немного работать. Иногда небольшие границы будут также проводиться от границы. Проблема возникает только в течение нескольких секунд, прежде чем вся панель снова перерисовывается. Могу ли я что-нибудь сделать, чтобы этого не случилось?

1 Ответ

0 голосов
/ 17 февраля 2010

ClipRectangle сообщает вам, какая часть элемента управления должна быть перекрашена. Если вы перемещаете что-то над этим, это, вероятно, будет пересечение вашего объекта и того, который перемещается. Вы можете использовать эту информацию, чтобы более эффективно перекрасить ваш контроль.

Возможно, вы хотите нарисовать прямоугольник от (0, 0) до (panelContent.Width-1, panelContent.Height-1).

...