Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > закруглить углы у Rectangle


Автор: gambit 28.6.2009, 23:19
Как4 на форме отрисовать прямоугольник со скругленными углами???

Автор: Grok 29.6.2009, 00:55
я для этого использовал GraphicsPath

Автор: NightmareZ 29.6.2009, 03:00
Код

public static GraphicsPath CreateRoundedRectangle(float x, float y, float width, float height, float d)
{
    var path = new GraphicsPath();
    float r = d / 2f;

    path.AddLine(x + r, y, x + width - r, y);
    path.AddArc(x + width - d, y, d, d, 270, 90);
    path.AddLine(x + width, y + r, x + width, y + height - r);
    path.AddArc(x + width - d, y + height - d, d, d, 0, 90);
    path.AddLine(x + width - r, y + height, x + r, y + height);
    path.AddArc(x, y + height - d, d, d, 90, 90);
    path.AddLine(x, y + height - r, x, y + r);
    path.AddArc(x, y, d, d, 180, 90);

    return path;
}


Код

GraphicsPath path = CreateRoundedRectangle(10, 10, 100, 100, 5);
gfx.DrawPath(Pens.Black, path);

Автор: gambit 29.6.2009, 10:00
NightmareZ, спасибо.

Grok, то что надо использовать GraphicsPath, я могу и нагуглить, вопрос как его использовать.

Автор: Grok 29.6.2009, 10:49
gambit, вот код с использованием Rectangle
Код

        public GraphicsPath ButtonWithRoundingCorners(Rectangle btnRect, int diam)
        {
            GraphicsPath btnPath = new GraphicsPath();
            btnPath.StartFigure();
            btnPath.AddArc(btnRect.X, btnRect.Y, diam, diam, 180, 90);
            btnPath.AddArc(btnRect.X + btnRect.Width - diam, btnRect.Y, diam, diam, 270, 90);
            btnPath.AddArc(btnRect.X + btnRect.Width - diam, btnRect.Y + btnRect.Height - diam, 
                diam, diam, 0, 90);
            btnPath.AddArc(btnRect.X, btnRect.Y + btnRect.Height - diam, diam, diam, 90, 90);
            btnPath.CloseFigure();
            return btnPath;
        }


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)