解释 DrawArc 方法?

6
我有一个任务,需要绘制一个“八字图”,所以我想将其看作是绘制四个弧。我尝试使用“DrawArc”方法,但我真的不理解它是如何工作的。
“DrawArc”方法有4个参数: 1-画笔。 2-要绘制的矩形。 3-起始角度。 4-扫描角度。
我不明白的是起始角度和扫描角度,有知识的人能告诉我这两个参数是什么,它们如何影响绘图吗?
另外,给定矩形参数会将(0,0)作为起点吗?
编辑:我已经尝试了以下代码:
        e.Graphics.DrawArc(drawPen, 0, 0, 600, 400, 45, 90);
        e.Graphics.DrawArc(drawPen, 0, 345, 600, 400, -45, -90);

这导致了以下结果:

在此处输入图片描述

我想把它放大,我已经尝试过修改代码,但没有成功,我不知道自己在做什么,只是随意更改数字,所以想请您解释一下。


2
你是否已经疯狂地阅读文档了?文档似乎相当好地解释了这些参数的含义,你不明白的部分是什么?你是否编写了一些代码来测试并尝试不同的值,以查看会发生什么?当我不理解某些内容时,通常都是这样弄清楚它们运作的。 - Cody Gray
1
你真的认为我在来这里之前没有阅读文档吗?假设你确实从文档中完全理解了,能否请你解释一下起始角和扫描角是什么? - ykh
1
@user,起始角度和扫描角度在文档中已经非常明确定义(分别为以度为单位的角度,从x轴顺时针测量到弧的起点以度为单位的角度,从startAngle参数顺时针测量到弧的终点)。这在弧是椭圆周长在startAngle参数和startAngle+ sweepAngle参数之间的部分中进一步解释。正如Cody所说,您能否澄清您不理解的内容? - Frédéric Hamidi
2个回答

3
您可以想象2D坐标轴和顺时针旋转,
开始角度:显示您要从X轴开始绘制的点
扫描角度:顺时针旋转的测量值,
此外,MSDN表示:
startAngle:以度为单位,从x轴顺时针测量到弧的起始点的角度。
sweepAngle:以度为单位,从startAngle参数到弧的结束点顺时针测量的角度。
例如:水平弧和垂直弧:
  switch (ArcType)
        {
            case ArcType.Horizantal :
                g.DrawArc(Pens.Black, 0, 15, 15, 15, 0, -180); 
                break; 
            case ArcType.Vertical:
                g.DrawArc(Pens.Black, 0, 15, 15,15, -90,180);                    
                break;
        } 

你写道:“sweepAngle:以度为单位的角度,从startAngle参数顺时针测量到弧的结束点”。因此,这意味着sweepAngle = desiredAbsolueEndAngle - startAngle。我认为。 - Ivan P.

3

这些坐标是用于从上方和左侧按宽度和高度绘制完整椭圆的。实际绘制的椭圆部分由起始角度和结束角度确定。如果将圆视为时钟,则3:00为0,6:00为90,9:00为180,12:00为270。


我也曾经被这个问题困扰 - 然后我意识到起始位置(x,y)是完整椭圆的边界框的左上角。这不是椭圆的中心,就像您在数学课上画的那样。 - quilkin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接