Tracez une ligne tournée à un angle par rapport au bitmap

Je trace une ligne du centre de l’image png en haut dans le code ci-dessous:

private ssortingng ProcessImage(ssortingng fileIn) { var sourceImage = System.Drawing.Image.FromFile(fileIn); var fileName = Path.GetFileName(fileIn); var finalPath = Server.MapPath(@"~/Output/" + fileName); int x = sourceImage.Width / 2; int y = sourceImage.Height / 2; using (var g = Graphics.FromImage(sourceImage)) { g.DrawLine(new Pen(Color.Black, (float)5), new Point(x, 0), new Point(x, y)); } sourceImage.Save(finalPath); return @"~/Output/" + fileName; } 

Cela fonctionne bien et j’ai une ligne à 90 degrés du centre de l’image. Maintenant, ce dont j’ai besoin, c’est que, au lieu d’une ligne perpendiculaire à 90 degrés, j’aimerais accepter le degré de l’utilisateur. Si l’utilisateur entre 45 degrés, la ligne doit être tracée à 45 degrés du centre de l’image png.

Merci de me guider dans la bonne direction.

Merci

Supposons que vous avez l’angle souhaité dans un float angle Tout ce que vous avez à faire est d’insérer ces trois lignes avant de les tracer:

  g.TranslateTransform(x, y); // move the origin to the rotation point g.RotateTransform(angle); // rotate g.TranslateTransform(-x, -y); // move back g.DrawLine(new Pen(Color.Black, (float)5), new Point(x, 0), new Point(x, y)); 

Si vous voulez dessiner plus de choses sans la rotation, appelez g.ResetTranform() !