WinForm — рисование рамки изменения размера с использованием рамки в один пиксель.

StackOverflow https://stackoverflow.com/questions/93811

  •  01-07-2019
  •  | 
  •  

Вопрос

В форме Windows с рамкой изменения размера граница фрейма отображается в виде приподнятого трехмерного изображения.Я бы хотел, чтобы он рисовал с плоской рамкой в ​​один пиксель выбранного мной цвета.

Возможно ли это без необходимости рисовать всю форму?

Это было полезно?

Решение

Вы можете попробовать что-то вроде этого:

Point lastPoint = Point.Empty;
Panel leftResizer = new Panel();
leftResizer.Cursor = System.Windows.Forms.Cursors.SizeWE;
leftResizer.Dock = System.Windows.Forms.DockStyle.Left;
leftResizer.Size = new System.Drawing.Size(1, 100);
leftResizer.MouseDown += delegate(object sender, MouseEventArgs e) { 
  lastPoint = leftResizer.PointToScreen(e.Location); 
  leftResizer.Capture = true;
}
leftResizer.MouseMove += delegate(object sender, MouseEventArgs e) {
  if (lastPoint != Point.Empty) {
    Point newPoint = leftResizer.PointToScreen(e.Location);
    Location = new Point(Location.X + (newPoint.X - lastPoint.X), Location.Y);
    Width = Math.Max(MinimumSize.Width, Width - (newPoint.X - lastPoint.X));
    lastPoint = newPoint;
  }
}
leftResizer.MouseUp += delegate (object sender, MouseEventArgs e) { 
  lastPoint = Point.Empty;
  leftResizer.Capture = false;
}

form.BorderStyle = BorderStyle.None;
form.Add(leftResizer);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top