美文网首页
C# GDI+DrawArc 弧线

C# GDI+DrawArc 弧线

作者: 技术老小子 | 来源:发表于2025-10-14 05:22 被阅读0次

摘要


C#中的DrawArc方法可以用来绘制椭圆的一部分,通过指定一对坐标、宽度和高度,可以在屏幕上绘制出椭圆的部分弧线。该方法接受四个参数,分别是椭圆左上角和右下角的坐标,椭圆的宽度和高度。绘制完成后,可以通过设置相应的属性来控制画笔的颜色、线型、填充等效果。

正文


Graphics.DrawArc方法用于绘制表示由一对坐标,宽度和高度指定的椭圆的一部分的圆弧。此方法的重载列表中有4种方法,如下所示:

  • DrawArc(Pen,Rectangle,Single,Single)方法
  • DrawArc(Pen,RectangleF,Single,Single)方法
  • DrawArc(Pen,Int32,Int32,Int32,Int32,Int32,Int32)方法
  • DrawArc(Pen, Single, Single, Single, Single, Single, Single)方法

一个例子

绘制一个弧线,它是椭圆外围的一部分。 椭圆由矩形的边界定义。 弧线是参数与startAngle + sweepAngle参数之间的startAngle椭圆外围部分。

protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);
    e.Graphics.SmoothingMode=System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
    Pen pen=new Pen(Color.DarkBlue, 2);
    Rectangle rect=new Rectangle(0,0,200,200);

    //定义开始 (45 度) 和扫描 (180 度) 角度。
    float startAngle = 45.0F;
    float sweepAngle = 180F;

    e.Graphics.DrawArc(pen,rect,startAngle, sweepAngle);
}

image.png

再来一个

protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);
    e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;

    for (int i = 1; i < 10; i++)
    {
        Pen pen = new Pen(Color.DarkBlue, 2);

        Rectangle rect = new Rectangle(i * 5, i * 5, 200 - i * 10, 200 - i * 10);

        float startAngle = 45.0F;
        float sweepAngle = 270F;

        e.Graphics.DrawArc(pen, rect, startAngle, sweepAngle);
    }

}

image.png

加一个动画

public class CircleProgressBar : PictureBox
{
    System.Timers.Timer timer;

    public CircleProgressBar()
    {
        timer=new System.Timers.Timer();
        timer.Interval = 10;
        timer.Elapsed += Timer_Elapsed;
        timer.Start();
    }
    float sweepAngle = 0F;
    private void Timer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e)
    {
        if (sweepAngle <= 270)
        {
            sweepAngle++;
        }
        else
        {
            sweepAngle =0;
        }
        this.Invalidate();
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);
        e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
        int width = this.Width;
        int height = this.Height;
        try
        {
            for (int i = 1; i < 5; i++)
            {
                Pen pen = new Pen(Color.DarkBlue, 2);

                Rectangle rect = new Rectangle(i * 5, i * 5, width - i * 10, height - i * 10);

                float startAngle = 45.0F;

                e.Graphics.DrawArc(pen, rect, startAngle, sweepAngle);
            }
        }
        catch(Exception ex)
        {

        }
    }
}

image.png

技术老小子(OTTeach.cn)

相关文章

  • 弧线

    四月的风绕过少女的裙摆,扬起的弧线是柔而美的。 一荡一荡的,像极了那一圈圈的涟漪。 少女的身姿也是极美的,纤细的腰...

  • 弧线

    炽热的北风 吹断了雨中的鼓点; 舞动的树影 掀起铺天盖地的绿涛。 黑夜击碎了最后的一片霞, 在星星和我之间 划出一...

  • 弧线

    划过了,一瞬间, 一条自然弯曲的弧线, 从遥远的那边,到了这边。 虽然短暂, 有惊喜,有祝愿, 有尖叫,有平淡。 ...

  • 弧线

    两朵浪花, 相遇后便会分离。 于是他们约定, 在那浪漫的海边相聚。 可一个去了奔腾的黄河, 一个则变成了雨水,降落...

  • 弧线

    住在这幢楼里也已经有好几年一切在我心中都是那么熟悉,包括对面那一幢楼里那一个执着的身影,每一次都让我凭栏相望许久,...

  • 弧线

    总会有什么抓不住 如夜色中的酒精 醉倒之后就是下一碗 下一个装满月亮的水缸 有槐花和泥土味入喉 入胆汁 入十指连心...

  • 弧线

  • 弧线

    那夜的头发,突然变长, 破洞的牛仔裤,挂满金属亮片, 沉寂的黑,没人和我对讲, 一件斗蓬,开始对抗公知。 扑向,空...

  • 弧线

    屋顶晾衣绳燕子飞落其上稍整理了下羽毛一旁家猫正抬着头霎那间两条弧线相交妹妹与我赶忙捉住家猫硬是撬开了嘴掰出了燕子捧...

  • 弧线

    (一)弧线 彩虹似的云朵在天空里浅吟低唱 太阳的霞光在画着圈圈 田野上压弯了腰的稻谷 忙着收割的农夫向大地弓着腰 ...

网友评论

      本文标题:C# GDI+DrawArc 弧线

      本文链接:https://www.haomeiwen.com/subject/efgitstx.html