Amazon EC2: как конвертировать существующий PV AMI в HVM

   ControlPaint.DrawBorder(e.Graphics, e.ClipRectangle, ...)

Использование e.ClipRectangle, как это, является традиционной ошибкой в ​​обработчике событий Paint. Это не прямоугольник, который соответствует границе, которую вы хотите нарисовать. Только часть элемента управления нуждается в [gg] для окрашивания. Обычно это полный контроль, но не всегда. Например, в вашем случае, когда вы перетаскиваете окно через свой элемент управления, нужно перекрасить только ту часть, которая обнаружена. Итак, теперь вы рисуете границу в неправильном положении, создавая эти черные линии.

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

Вам нужно будет передать фактический прямоугольник вашей границы. Исправление:

   ControlPaint.DrawBorder(e.Graphics, Me.ClientRectangle, _
                           Color.Black, ButtonBorderStyle.Solid)
81
задан George Stocker 11 November 2014 в 22:13
поделиться