Это вполне возможно сделать. Посмотрите на метод DrawReversibleLine
на MSDN . А пока я попытаюсь найти какой-нибудь код, в котором я делал то же самое.
bool AllowResize;
bool DoTracking;
private void MyControl_MouseDown(object sender, MouseEventArgs e)
{
if (AllowResize)
{
DoTracking = true;
ControlPaint.DrawReversibleFrame(new Rectangle(this.PointToScreen(new Point(1,1)),
this.Size), Color.DarkGray, FrameStyle.Thick);
}
}
Я знаю, что это очень общее и в основном грубое начало, но, как уже упоминалось, это может быть утомительным занятием. Особенно, когда дело доходит до отслеживания движения и т. Д. Помните, что для события MyControl_MouseUp
необходимо вызвать ControlPaint.DrawReversibleFrame (...), чтобы стереть кадр. Также во время контроля движения. Повторный вызов функции с точно такими же параметрами - это все, что вам нужно. Надеюсь, это поможет.
Кроме того, чтобы уменьшить мерцание , как отмечает Джош, добавьте следующее после вашего InitializeComponents();
// To reduce redraw flicker
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.DoubleBuffer, true);