c# 图形绘制

1.c# 画一个正方形

在C#中,如果你想在Windows Forms应用程序中画一个正方形,你可以重写OnPaint方法。以下是一个简单的示例,展示了如何在Windows Forms的Form上绘制一个正方形:

  1. 创建一个新的Windows Forms应用程序。
  2. 在你的Form类中,重写OnPaint方法。

下面是具体的代码示例:

using System;  
using System.Drawing;  
using System.Windows.Forms;  
  
public partial class MyForm : Form  
{  
    public MyForm()  
    {  
        InitializeComponent();  
        // 你可以在这里设置Form的双缓冲,以避免绘制时出现的闪烁  
        this.DoubleBuffered = true;  
    }  
  
    protected override void OnPaint(PaintEventArgs e)  
    {  
        base.OnPaint(e);  
  
        // 创建一个Pen对象,用于绘制正方形  
        using (Pen pen = new Pen(Color.Black, 2)) // 你可以更改颜色和线条宽度  
        {  
            // 设置正方形的位置和大小  
            // 在这个例子中,我们从(50, 50)开始,大小为100x100  
            Rectangle rect = new Rectangle(50, 50, 100, 100);  
  
            // 使用Graphics对象的DrawRectangle方法来绘制正方形  
            e.Graphics.DrawRectangle(pen, rect);  
        }  
    }  
}

这段代码将在Form上绘制一个位于(50, 50)位置,大小为100x100的黑色正方形。你可以根据需要调整位置和大小,以及线条的颜色和宽度。

另外,请注意,OnPaint方法会在Form需要重绘时自动被调用,例如当Form首次显示时,或者当它被其他窗口遮挡后又重新显示时。因此,你不需要(也不应该)直接调用OnPaint方法。如果你需要在特定时间绘制正方形,你应该调用InvalidateRefresh方法,这会触发OnPaint方法的调用。

2.c# 画一个三角形 

在C#中,如果你想在Windows Forms应用程序中画一个三角形,你可以使用Graphics对象的DrawPolygon方法。这个方法允许你绘制一个由多个点定义的多边形。对于三角形,你需要定义三个点。以下是一个示例,展示了如何在Windows Forms的Form上绘制一个三角形:

  1. 创建一个新的Windows Forms应用程序。
  2. 在你的Form类中,重写OnPaint方法。

以下是具体的代码示例:

 
using System;  
using System.Drawing;  
using System.Windows.Forms;  
  
public partial class MyForm : Form  
{  
    public MyForm()  
    {  
        InitializeComponent();  
        // 你可以在这里设置Form的双缓冲,以避免绘制时出现的闪烁  
        this.DoubleBuffered = true;  
    }  
  
    protected override void OnPaint(PaintEventArgs e)  
    {  
        base.OnPaint(e);  
  
        // 创建一个Pen对象,用于绘制三角形  
        using (Pen pen = new Pen(Color.Black, 2)) // 你可以更改颜色和线条宽度  
        {  
            // 定义三角形的三个顶点(按顺序)  
            Point point1 = new Point(50, 50);  
            Point point2 = new Point(150, 50);  
            Point point3 = new Point(100, 150);  
  
            // 将顶点添加到Point数组中  
            Point[] trianglePoints = { point1, point2, point3 };  
  
            // 使用Graphics对象的DrawPolygon方法来绘制三角形  
            e.Graphics.DrawPolygon(pen, trianglePoints);  
        }  
    }  
}

这段代码将在Form上绘制一个黑色三角形,其顶点分别为(50, 50),(150, 50)和(100, 150)。你可以根据需要调整这些点的位置,以及线条的颜色和宽度。

同样地,OnPaint方法会在Form需要重绘时自动被调用。如果你需要在特定时间绘制三角形,你应该调用InvalidateRefresh方法,这会触发OnPaint方法的调用。

3. c# 画一个五角星

在C#中,如果你想在Windows Forms应用程序中画一个五角星,你需要计算五角星的顶点位置,并使用Graphics对象的DrawLinesDrawPolygon方法来绘制。由于五角星不是一个简单的矩形或多边形,我们需要手动计算其顶点的位置。

以下是一个示例,展示了如何在Windows Forms的Form上绘制一个五角星:

using System;  
using System.Drawing;  
using System.Windows.Forms;  
  
public partial class MyForm : Form  
{  
    public MyForm()  
    {  
        InitializeComponent();  
        // 你可以在这里设置Form的双缓冲,以避免绘制时出现的闪烁  
        this.DoubleBuffered = true;  
    }  
  
    protected override void OnPaint(PaintEventArgs e)  
    {  
        base.OnPaint(e);  
  
        // 定义五角星中心位置和半径  
        int centerX = ClientSize.Width / 2;  
        int centerY = ClientSize.Height / 2;  
        int radius = Math.Min(centerX, centerY) - 50; // 减去一些空间以避免边缘  
  
        // 计算五角星的外接圆半径和旋转角度  
        double outerRadius = radius;  
        double innerRadius = (radius * Math.Sqrt(5.0) / 2.0) - (radius / 2.0);  
  
        // 定义五角星顶点的角度  
        double angle = Math.PI / 2; // 初始角度为90度(PI/2弧度)  
        double angleIncrement = Math.PI * 2 / 5; // 每次增加的角度为72度(2PI/5弧度)  
  
        // 创建一个Point数组来存储五角星的顶点  
        Point[] starPoints = new Point[10]; // 五角星有5个顶点,但我们需要两次(线条连接)  
  
        // 遍历并计算五角星的顶点  
        for (int i = 0; i < 5; i++)  
        {  
            // 外接圆上的点  
            int outerX = (int)(centerX + outerRadius * Math.Cos(angle));  
            int outerY = (int)(centerY + outerRadius * Math.Sin(angle));  
            starPoints[i * 2] = new Point(outerX, outerY);  
  
            // 内接圆上的点  
            int innerX = (int)(centerX + innerRadius * Math.Cos(angle));  
            int innerY = (int)(centerY + innerRadius * Math.Sin(angle));  
            starPoints[i * 2 + 1] = new Point(innerX, innerY);  
  
            // 增加角度  
            angle += angleIncrement;  
        }  
  
        // 闭合五角星(将最后一个点与第一个点连接起来)  
        starPoints[9] = starPoints[0];  
  
        // 创建一个Pen对象,用于绘制五角星  
        using (Pen pen = new Pen(Color.Black, 2)) // 你可以更改颜色和线条宽度  
        {  
            // 使用Graphics对象的DrawLines方法来绘制五角星  
            e.Graphics.DrawLines(pen, starPoints);  
        }  
    }  
}

这段代码首先定义了五角星的中心位置和半径,然后计算了外接圆和内接圆的半径以及顶点之间的角度增量。接着,它遍历这些角度并计算五角星的顶点位置,并将它们存储在Point数组中。最后,它使用Graphics对象的DrawLines方法来绘制五角星。注意,由于五角星是由线条组成的,我们使用DrawLines而不是DrawPolygon。我们还确保了五角星的线条是闭合的,通过将最后一个点与第一个点连接起来。

4.使用System.Drawing绘制一个正方形 

在C#中,使用System.Drawing命名空间来绘制一个正方形非常简单。以下是一个在Windows Forms应用程序中绘制正方形的示例。首先,你需要一个Form,然后在Form的OnPaint事件处理器中绘制正方形。

下面是一个完整的示例代码:

using System;  
using System.Drawing;  
using System.Windows.Forms;  
  
public partial class MyForm : Form  
{  
    public MyForm()  
    {  
        InitializeComponent();  
        // 你可以在这里设置Form的双缓冲,以避免绘制时出现的闪烁  
        this.DoubleBuffered = true;  
    }  
  
    protected override void OnPaint(PaintEventArgs e)  
    {  
        base.OnPaint(e);  
  
        // 创建一个Pen对象,用于绘制长方形  
        using (Pen pen = new Pen(Color.Black, 2)) // 你可以更改颜色和线条宽度  
        {  
            // 设置长方形的位置和大小  
            // 在这个例子中,我们从(50, 50)开始,宽度为200,高度为100  
            Rectangle rect = new Rectangle(50, 50, 200, 100);  
  
            // 使用Graphics对象的DrawRectangle方法来绘制长方形  
            e.Graphics.DrawRectangle(pen, rect);  
        }  
    }  
}

在这段代码中,我们首先创建了一个Pen对象,设置了它的颜色和线条宽度。然后,我们创建了一个Rectangle对象,指定了正方形的位置和大小(左上角坐标和宽度、高度)。最后,我们使用Graphics对象的DrawRectangle方法,将PenRectangle作为参数,来绘制正方形。

确保将这段代码添加到你的Form类中,并且你的Form已经正确初始化并可以显示。当你运行程序时,你应该能在Form上看到绘制的正方形。

5.使用System.Drawing绘制一个圆形 

在Windows Forms应用程序中,使用System.Drawing命名空间绘制一个圆形是非常简单的。你可以使用Graphics对象的DrawEllipseDrawPie方法来绘制一个圆形,尽管DrawEllipse方法通常用于绘制椭圆,但当椭圆的宽度和高度相等时,它实际上会绘制一个圆形。

以下是一个示例代码,展示了如何在Windows Forms的Form上绘制一个圆形:

 
using System;  
using System.Drawing;  
using System.Windows.Forms;  
  
public partial class MyForm : Form  
{  
    public MyForm()  
    {  
        InitializeComponent();  
        // 你可以在这里设置Form的双缓冲,以避免绘制时出现的闪烁  
        this.DoubleBuffered = true;  
    }  
  
    protected override void OnPaint(PaintEventArgs e)  
    {  
        base.OnPaint(e);  
  
        // 创建一个Pen对象,用于绘制圆形的边框  
        using (Pen pen = new Pen(Color.Black, 2)) // 你可以更改颜色和线条宽度  
        {  
            // 创建一个Brush对象,用于填充圆形(如果需要的话)  
            using (Brush brush = new SolidBrush(Color.LightBlue)) // 你可以更改填充颜色  
            {  
                // 设置圆形的位置和大小  
                // 在这个例子中,圆心在(100, 100),半径为50  
                int centerX = 100;  
                int centerY = 100;  
                int radius = 50;  
  
                // 绘制圆形的边框(使用DrawEllipse方法)  
                e.Graphics.DrawEllipse(pen, centerX - radius, centerY - radius, 2 * radius, 2 * radius);  
  
                // 如果你想要填充圆形,可以使用FillEllipse方法  
                // e.Graphics.FillEllipse(brush, centerX - radius, centerY - radius, 2 * radius, 2 * radius);  
            }  
        }  
    }  
}

在这个例子中,我们首先创建了一个Pen对象来定义圆形的边框线条的颜色和宽度。然后,我们定义了一个Brush对象(在这个例子中是SolidBrush),用于填充圆形(如果需要的话)。接着,我们设置了圆形的位置和大小,其中圆心坐标是(centerX, centerY),半径是radius。最后,我们使用Graphics对象的DrawEllipse方法来绘制圆形的边框。如果你想要填充圆形,可以使用FillEllipse方法代替DrawEllipse方法,并将Brush对象作为参数传递。

确保将这段代码添加到你的Form类中,并且你的Form已经正确初始化并可以显示。当你运行程序时,你应该能在Form上看到绘制的圆形。

6.使用System.Drawing绘制一个三角形 

System.Drawing命名空间中,Graphics类没有直接提供绘制三角形的方法。但是,你可以通过绘制三条线来构成一个三角形。以下是一个示例代码,展示了如何在Windows Forms的Form上绘制一个三角形:

 
using System;  
using System.Drawing;  
using System.Windows.Forms;  
  
public partial class MyForm : Form  
{  
    public MyForm()  
    {  
        InitializeComponent();  
        // 你可以在这里设置Form的双缓冲,以避免绘制时出现的闪烁  
        this.DoubleBuffered = true;  
    }  
  
    protected override void OnPaint(PaintEventArgs e)  
    {  
        base.OnPaint(e);  
  
        // 创建一个Pen对象,用于绘制三角形的边  
        using (Pen pen = new Pen(Color.Black, 2)) // 你可以更改颜色和线条宽度  
        {  
            // 设置三角形的三个顶点  
            Point point1 = new Point(50, 50);  
            Point point2 = new Point(150, 50);  
            Point point3 = new Point(100, 150);  
  
            // 绘制三条线以构成三角形  
            e.Graphics.DrawLine(pen, point1, point2);  
            e.Graphics.DrawLine(pen, point2, point3);  
            e.Graphics.DrawLine(pen, point3, point1);  
        }  
    }  
}

在这个例子中,我们首先创建了一个Pen对象来定义三角形边的颜色和宽度。然后,我们定义了三角形的三个顶点。最后,我们使用Graphics对象的DrawLine方法来绘制三条线,这些线将连接三个顶点,从而形成一个三角形。

确保将这段代码添加到你的Form类中,并且你的Form已经正确初始化并可以显示。当你运行程序时,你应该能在Form上看到绘制的三角形。

7.使用System.Drawing绘制一个五角星 

System.Drawing中绘制一个五角星可以通过计算五个顶点的位置并使用DrawLine方法连接它们来实现。以下是一个示例代码,展示了如何在Windows Forms的Form上绘制一个五角星:

 
using System;  
using System.Drawing;  
using System.Windows.Forms;  
  
public partial class MyForm : Form  
{  
    public MyForm()  
    {  
        InitializeComponent();  
        // 你可以在这里设置Form的双缓冲,以避免绘制时出现的闪烁  
        this.DoubleBuffered = true;  
    }  
  
    protected override void OnPaint(PaintEventArgs e)  
    {  
        base.OnPaint(e);  
  
        // 创建一个Pen对象,用于绘制五角星  
        using (Pen pen = new Pen(Color.Black, 2)) // 你可以更改颜色和线条宽度  
        {  
            // 设定五角星的中心点  
            int centerX = 100;  
            int centerY = 100;  
  
            // 设定五角星的外接圆半径  
            int radius = 50;  
  
            // 设定五角星的旋转角度(如果需要)  
            double rotateAngle = Math.PI / 2; // 从上顶点开始  
  
            // 计算五角星的五个顶点  
            PointF[] starPoints = CalculateStarPoints(centerX, centerY, radius, 5, rotateAngle);  
  
            // 绘制五角星  
            for (int i = 0; i < starPoints.Length; i++)  
            {  
                int nextIndex = (i + 1) % starPoints.Length;  
                e.Graphics.DrawLine(pen, starPoints[i], starPoints[nextIndex]);  
            }  
        }  
    }  
  
    // 计算五角星的顶点  
    private PointF[] CalculateStarPoints(float centerX, float centerY, float radius, int spikes, double rotation)  
    {  
        PointF[] result = new PointF[spikes];  
  
        double outerRadius = radius; // 外接圆半径  
        double innerRadius = radius * 0.5f * Math.Sqrt(3); // 内接圆半径(五角星的特殊值)  
  
        double angle = Math.PI / 2 * 3 - spikes * Math.PI / spikes; // 第一个顶点的角度  
  
        for (int i = 0; i < spikes; i++)  
        {  
            result[i].X = (float)(centerX + Math.Cos(angle + rotation) * outerRadius);  
            if (i % 2 == 0)  
            {  
                result[i].Y = (float)(centerY + Math.Sin(angle + rotation) * outerRadius);  
            }  
            else  
            {  
                result[i].Y = (float)(centerY + Math.Sin(angle + rotation) * innerRadius);  
            }  
  
            angle += Math.PI / spikes;  
        }  
  
        return result;  
    }  
}

在这个例子中,我们创建了一个Pen对象来定义五角星线条的颜色和宽度。然后,我们定义了一个CalculateStarPoints方法来计算五角星的五个顶点。这个方法基于外接圆半径、内接圆半径(五角星的特殊值)以及顶点的数量来计算每个顶点的位置。最后,我们使用Graphics对象的DrawLine方法来连接这些顶点,从而绘制出五角星。

确保将这段代码添加到你的Form类中,并且你的Form已经正确初始化并可以显示。当你运行程序时,你应该能在Form上看到绘制的五角星。

  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值