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