J'ai une méthode qui dessine un rectangle arrondi avec une bordure. La bordure peut avoir n'importe quelle largeur, donc le problème que j'ai est que la frontière dépasse les limites données quand elle est épaisse parce qu'elle est tirée du centre d'un chemin.Comment dessiner un rectangle arrondi avec une bordure de largeur variable à l'intérieur de limites spécifiques
Comment est-ce que j'inclurais la largeur de la frontière de sorte qu'elle s'adapte parfaitement aux limites données?
Voici le code que j'utilise pour dessiner le rectangle arrondi.
private void DrawRoundedRectangle(Graphics gfx, Rectangle Bounds, int CornerRadius, Pen DrawPen, Color FillColor)
{
GraphicsPath gfxPath = new GraphicsPath();
DrawPen.EndCap = DrawPen.StartCap = LineCap.Round;
gfxPath.AddArc(Bounds.X, Bounds.Y, CornerRadius, CornerRadius, 180, 90);
gfxPath.AddArc(Bounds.X + Bounds.Width - CornerRadius, Bounds.Y, CornerRadius, CornerRadius, 270, 90);
gfxPath.AddArc(Bounds.X + Bounds.Width - CornerRadius, Bounds.Y + Bounds.Height - CornerRadius, CornerRadius, CornerRadius, 0, 90);
gfxPath.AddArc(Bounds.X, Bounds.Y + Bounds.Height - CornerRadius, CornerRadius, CornerRadius, 90, 90);
gfxPath.CloseAllFigures();
gfx.FillPath(new SolidBrush(FillColor), gfxPath);
gfx.DrawPath(DrawPen, gfxPath);
}