WinForm - dessine un cadre de redimensionnement à l'aide d'une bordure d'un seul pixel

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

  •  01-07-2019
  •  | 
  •  

Question

Dans un Windows Form avec un cadre de redimensionnement, la bordure du cadre est dessinée avec une apparence 3D en relief. J'aimerais que le dessin soit fait avec une bordure plate d'un seul pixel dans une couleur de mon choix.

Est-ce possible sans avoir à dessiner le formulaire complet?

Était-ce utile?

La solution

Vous pouvez essayer quelque chose comme ceci:

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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top