After some studying i managed to make it for future users.
Here is code for only bottom right corner rounded:
radius = (int)Math.Max((Math.Min(radius, Math.Min(Rect.Width, Rect.Height)) - width), 1);
float r2 = radius / 2f;
float w2 = width / 2f;
GraphicsPath GraphPath = new GraphicsPath();
GraphPath.AddLine(Rect.X + w2, Rect.Y + w2, Rect.X, Rect.Y);
GraphPath.AddLine(Rect.X + Rect.Width, Rect.Y, Rect.X + Rect.Width - w2, Rect.Y);
GraphPath.AddArc(Rect.X + Rect.Width - w2 - radius,
Rect.Y + Rect.Height - w2 - radius, radius, radius, 0, 90);
GraphPath.AddLine(Rect.X + w2, Rect.Y - w2 + Rect.Height, Rect.X - w2, radius);
GraphPath.AddLine(Rect.X + w2, Rect.Y + Rect.Height + r2 + w2 + Rect.Y, Rect.X + w2, Rect.Y + Rect.Y);
return GraphPath;
Top Left
GraphPath.AddLine(Rect.X + w2, Rect.Y + w2, Rect.X, Rect.Y);
GraphPath.AddArc(Rect.X + Rect.Width - radius - w2, Rect.Y + w2, radius, radius, 270, 90);
GraphPath.AddLine(Rect.X + Rect.Width-w2 ,Rect.Y + Rect.Height, Rect.X+Rect.Width,Rect.Y+Rect.Height-w2);
GraphPath.AddLine(Rect.X + w2, Rect.Y - w2 + Rect.Height, Rect.X - w2, radius);
GraphPath.AddLine(Rect.X + w2, Rect.Y + Rect.Height + r2 + w2 + Rect.Y, Rect.X + w2, Rect.Y + Rect.Y);
return GraphPath;
Top Right
GraphPath.AddArc(Rect.X + w2, Rect.Y + w2, radius, radius, 180, 90);
GraphPath.AddLine(Rect.X + Rect.Width, Rect.Y, Rect.X + Rect.Width - w2, Rect.Y);
GraphPath.AddLine(Rect.X + Rect.Width - w2, Rect.Y + Rect.Height, Rect.X + Rect.Width, Rect.Y + Rect.Height - w2);
GraphPath.AddLine(Rect.X + w2, Rect.Y - w2 + Rect.Height, Rect.X - w2, radius);
GraphPath.AddLine(Rect.X + w2, Rect.Y + Rect.Height - r2 - w2, Rect.X + w2, Rect.Y + r2 + w2);
return GraphPath;