C# 画任意角度的斜线

C# 画任意角度的斜线,c#,graphics,C#,Graphics,我试图在位图上绘制角度。问题是,一个像素只有8个方向的邻域,因此通过逐像素绘制,我们只能绘制倾斜角度为0、45、90、135、180、225、270、315和360度的直线 那么,如何在其他倾斜角度(例如35度或65度)绘制直线?如下所示(90x90位图): 是否有任何限制-例如最小画布大小?我应该能在一张30 x 30的图像中完成这项工作 您只需设置直线的起点和终点,然后让c#完成其余的操作(如果您想自己完成,您可以搜索)。 因此,如果要构建x度的直线,可以执行以下操作: 从点(0,30)开

我试图在位图上绘制角度。问题是,一个像素只有8个方向的邻域,因此通过逐像素绘制,我们只能绘制倾斜角度为0、45、90、135、180、225、270、315和360度的直线

那么,如何在其他倾斜角度(例如35度或65度)绘制直线?如下所示(90x90位图):


是否有任何限制-例如最小画布大小?我应该能在一张30 x 30的图像中完成这项工作

您只需设置直线的起点和终点,然后让c#完成其余的操作(如果您想自己完成,您可以搜索)。 因此,如果要构建x度的直线,可以执行以下操作:

  • 从点(0,30)开始

  • 如果角度小于45,则终点应为[30,30*(1-tan(角度))]

  • 如果不是,则其[30*tan(90角),0]

  • 代码:

    公共部分类表单1:表单
    {
    私人内角;
    公共表格1(内角)
    {
    初始化组件();
    这个角度=角度;
    }
    专用点端点(内角)
    {
    var端点=新点();
    
    如果(角度)看一些三角函数怎么样?问题很简单,我想在我的C#图片框上画上面的图片,如何从一个特定的(x,y位置)画一条直线。
    public partial class Form1 : Form
    {
        private int angle;
        public Form1(int angle)
        {
            InitializeComponent();
            this.angle = angle;   
        }
    
        private Point EndPoint(int angle)
        {
            var endPoint = new Point();
            if (angle <= 45)
            {
                endPoint.X = 30;
                endPoint.Y = (int) (30 - 30*Math.Tan(Radian(angle)));
            }
            else
            {
                endPoint.Y = 0;
                endPoint.X = (int) (30*Math.Tan(Radian(90-angle)));
            }
            return endPoint;
        }
    
        private double Radian(int angle) { return (Math.PI/180.0)*angle; }
    
        public void Draw()
        {
            var myPen = new System.Drawing.Pen(System.Drawing.Color.Red);
            var endPoint = EndPoint(angle);
            var formGraphics = this.CreateGraphics();
            formGraphics.DrawLine(myPen, 0, 30, endPoint.X, endPoint.Y);
            myPen.Dispose();
            formGraphics.Dispose();
        }
    
    }