绘制线在位图上以一定角度旋转

时间:2016-03-15 15:10:43

标签: c# .net bitmap gdi

我在下面的代码中从png图像的中心到顶部画一条线:

    private string ProcessImage(string 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;
    }

这很好用,我有一条距离图像中心90度的线。 现在我需要的是代替90度垂直线,我想接受用户输入的程度。如果用户输入45度,则应该从png图像的中心以45度绘制线条。

请指导我正确的方向。

感谢

1 个答案:

答案 0 :(得分:2)

假设您在float angle中拥有所需的角度,您需要做的就是在绘制线之前插入这三行:

    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));

如果你想在没有轮换电话的情况下绘制更多东西g.ResetTranform()