vous allez ici:
GraphicsPath path = new GraphicsPath();
path.FillMode = FillMode.Winding;
int cut = 80;
Rectangle cr = panel1.ClientRectangle;
Point[] points =
{
new Point(0, cr.Height - cut),
new Point(0, 0),
new Point(cr.Width, 0),
new Point(cr.Width, cr.Height - cut),
new Point(cr.Width - cut, cr.Height),
new Point(cut, cr.Height),
new Point(0, cr.Height - cut),
};
path.AddPolygon(points);
Rectangle arcRect = new Rectangle(0, cr.Height - 2 * cut, 2 * cut, 2 * cut);
path.AddArc(arcRect, 90f, 90f);
Un arc est définie par le rectangle de délimitation, qui dans notre cas a deux fois la taille de la coupe. Il commence à 90 ° dans le sens des aiguilles d'une montre à partir de l'axe des x et va pour (au moins) 90 ° de plus. Vous pouvez add it to a GraphicsPath ou draw it with a Graphics objet.
Voici une citation de MSDN:
Si des lignes ou des courbes précédentes dans la figure, une ligne est ajoutée pour relier l'extrémité du segment précédent au début de l'arc.
L'arc est tracé le long du périmètre de l'ellipse délimitée par le rectangle spécifié . Le point de départ de l'arc est déterminé par mesurant dans le sens des aiguilles d'une montre à partir de l'axe des x de l'ellipse (à l'angle ) par le nombre de degrés de l'angle de départ. Le point final est situé de manière similaire en mesurant dans le sens des aiguilles d'une montre à partir du point de départ par le nombre de degrés dans l'angle de balayage. Si l'angle de balayage est supérieur à 360 degrés ou inférieur à -360 degrés, l'arc est balayé par exactement 360 degrés ou -360 degrés, respectivement.
Notez que j'ai ajouté le rectangle de délimitation de l'arc pour la démonstration seulement. Le code ne l'inclut pas.
Pour des coupes arrondies dans les autres coins, vous devez modifier & pour agrandir le tableau de points et ajouter d'autres arcs.
les autres coins arcs prennent ces rectangles:
Rectangle arcRectTL = new Rectangle(0, 0, 2 * cut, 2 * cut);
Rectangle arcRectTR = new Rectangle(cr.Width - 2 * cut, 0, 2 * cut, 2 * cut);
Rectangle arcRectBR = new Rectangle(cr.Width - 2*cut, cr.Height - 2*cut, 2*cut, 2*cut);
Les angles de départ sont respectivement: 180°, 270° and 0°
.
Les tailles et l'angle de balayage restent les mêmes.
Vous aurez besoin d'ajouter un arc. – TaW
@TaW, comment puis-je l'utiliser pour cela? – DeaDViruS
Voir ma réponse pour un exemple. J'ai aussi un peu nettoyé votre code. – TaW