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

Posted

技术标签:

【中文标题】绘制在位图上以一定角度旋转的线【英文标题】:Draw line rotated at an angle over bitmap 【发布时间】:2016-07-01 02:50:08 【问题描述】:

我在下面的代码中从 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】:

假设您在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()

【讨论】:

以上是关于绘制在位图上以一定角度旋转的线的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript - 旋转基于SVG的线的角度

Unity怎样旋转指定的角度

在matlab画出三维球面并绕轴旋转一定角度

如何使用Canvas绘制drawText旋转角度

如何使用 python 的 PIL 以一定角度绘制文本?

如何使用 EaselJS 在位图上绘制/绘制线条?