C# Graphics类的用法

1. Graphics.TranslateTransform

Graphics.TranslateTransform是一个用来移动绘图坐标系的方法,可以将绘图坐标系沿着指定的X和Y轴方向平移一定的距离。它的语法如下:

public void TranslateTransform(float dx, float dy);

其中,dx和dy分别表示在X轴和Y轴方向上移动的距离。如果dx和dy为正数,那么绘图坐标系会向右和向下移动;如果dx和dy为负数,那么绘图坐标系会向左和向上移动。

如果需要在多个方向上移动绘图坐标系,可以多次调用TranslateTransform方法。例如,要将绘图坐标系向右下方移动10个像素,可以这样写:

graphics.TranslateTransform(10, 10);

在调用TranslateTransform方法之后,所有后续的绘图操作都会在移动后的坐标系中进行。如果需要还原坐标系到原始状态,可以使用Graphics.ResetTransform方法。例如:

graphics.ResetTransform();

需要注意的是,TranslateTransform方法对于所有后续的绘图操作都是有效的,因此必须在不需要移动坐标系的时候及时还原坐标系。否则,后续的绘图操作可能会出现错误。

2. Graphics.RotateTransform

Graphics.RotateTransform是一个用来旋转绘图坐标系的方法,可以将绘图坐标系绕着指定的中心点旋转一定的角度。它的语法如下:

public void RotateTransform(float angle);

其中,angle表示旋转的角度,单位为度。如果angle为正数,那么绘图坐标系会顺时针旋转;如果angle为负数,那么绘图坐标系会逆时针旋转。

如果需要指定旋转的中心点,可以使用另一个重载的RotateTransform方法。它的语法如下:

public void RotateTransform(float angle, PointF point);

其中,angle表示旋转的角度,单位为度;point表示旋转的中心点。例如,要将绘图坐标系绕着原点逆时针旋转30度,可以这样写:

graphics.RotateTransform(-30);

在调用RotateTransform方法之后,所有后续的绘图操作都会在旋转后的坐标系中进行。如果需要还原坐标系到原始状态,可以使用Graphics.ResetTransform方法。例如:

graphics.ResetTransform();

需要注意的是,RotateTransform方法对于所有后续的绘图操作都是有效的,因此必须在不需要旋转坐标系的时候及时还原坐标系。否则,后续的绘图操作可能会出现错误。

3. Graphics.ScaleTransform

Graphics.ScaleTransform方法是一个用来缩放绘图坐标系的方法,可以将绘图坐标系沿着X和Y轴方向分别缩放一定的比例。它的语法如下:

public void ScaleTransform(float scaleX, float scaleY);

其中,scaleX和scaleY分别表示在X轴和Y轴方向上的缩放比例。如果scaleX和scaleY为1,那么绘图坐标系不会发生变化;如果scaleX和scaleY小于1,那么绘图坐标系会缩小;如果scaleX和scaleY大于1,那么绘图坐标系会放大。

如果需要指定缩放的中心点,可以使用另一个重载的ScaleTransform方法。它的语法如下:

public void ScaleTransform(float scaleX, float scaleY, float centerX, float centerY);

其中,scaleX和scaleY分别表示在X轴和Y轴方向上的缩放比例;centerX和centerY表示缩放的中心点。例如,要将绘图坐标系沿着X轴方向缩小一半,可以这样写:

graphics.ScaleTransform(0.5f, 1);

在调用ScaleTransform方法之后,所有后续的绘图操作都会在缩放后的坐标系中进行。如果需要还原坐标系到原始状态,可以使用Graphics.ResetTransform方法。例如:

graphics.ResetTransform();

需要注意的是,ScaleTransform方法对于所有后续的绘图操作都是有效的,因此必须在不需要缩放坐标系的时候及时还原坐标系。否则,后续的绘图操作可能会出现错误。

4. Graphics.DrawImage

Graphics.DrawImage是一个用来绘制图像的方法,可以将一个图像绘制到指定的位置和大小。它的语法如下:

public void DrawImage(Image image, RectangleF destRect, RectangleF srcRect, GraphicsUnit srcUnit);

其中,image表示要绘制的图像;destRect表示目标矩形,即要将图像绘制到哪个位置和大小;srcRect表示源矩形,即要从图像中绘制哪个部分;srcUnit表示源矩形的单位,通常为像素。

如果要将整个图像绘制到目标矩形中,可以将srcRect设置为图像的整个区域,例如:

graphics.DrawImage(image, destRect, image.GetBounds(GraphicsUnit.Pixel), GraphicsUnit.Pixel);

如果要将图像缩放到目标矩形大小,可以先将srcRect设置为图像的整个区域,然后再调用Graphics.ScaleTransform方法对绘图坐标系进行缩放,例如:

graphics.DrawImage(image, destRect, image.GetBounds(GraphicsUnit.Pixel), GraphicsUnit.Pixel); graphics.ScaleTransform(destRect.Width / image.Width, destRect.Height / image.Height);

在调用DrawImage方法之前,可以使用Graphics.SmoothingMode、Graphics.InterpolationMode等属性来设置绘图的平滑模式和插值模式。例如,要使用高质量的平滑模式和插值模式绘制图像,可以这样写:

graphics.SmoothingMode = SmoothingMode.HighQuality; graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; graphics.DrawImage(image, destRect, image.GetBounds(GraphicsUnit.Pixel), GraphicsUnit.Pixel);

需要注意的是,如果目标矩形的宽度或高度小于源矩形的宽度或高度,那么图像会被裁剪;如果目标矩形的宽度或高度大于源矩形的宽度或高度,那么图像会被拉伸。因此,要根据实际需求来设置目标矩形的大小和源矩形的位置和大小。

5. Graphics.Save

C# Graphics类的Save方法可以将绘制的图形保存到指定的文件中。该方法有多个重载形式,最常用的形式是:

public void Save(string filename, ImageFormat format);

其中,filename为要保存的文件名,format为图像格式,例如JPEG、PNG、BMP等。下面是一个示例:

using System.Drawing;
using System.Drawing.Imaging;

// 创建一个位图对象
Bitmap bitmap = new Bitmap(400, 300);

// 创建一个画布对象
Graphics g = Graphics.FromImage(bitmap);

// 在画布上绘制一些图形
g.DrawLine(Pens.Red, new Point(0, 0), new Point(400, 300));
g.DrawRectangle(Pens.Blue, new Rectangle(100, 100, 200, 100));
g.DrawString("Hello, world!", new Font("Arial", 16), Brushes.Black, new PointF(50, 50));

// 将绘制的图形保存到文件中
bitmap.Save("test.png", ImageFormat.Png);

在上述代码中,我们首先创建了一个位图对象和一个画布对象,然后在画布上绘制了一些图形。最后,调用Save方法将绘制的图形保存为PNG格式的文件。如果要保存为其他格式,只需将ImageFormat.Png替换为对应的格式即可。注意,在使用完Graphics对象之后,应该调用Dispose方法释放资源。

6. Graphics.Restore

C# Graphics类的Restore方法可以恢复图形状态,撤销上一次绘制操作。当我们在绘制图形时调用了Graphics对象的变换方法(如TranslateTransform、ScaleTransform、RotateTransform等),这些变换会对后续的绘制操作产生影响。如果需要撤销这些变换,可以使用Restore方法恢复到之前的状态。

7. Graphics.Clear

C# Graphics类的Clear方法可以清除图形表面,填充指定的颜色。该方法有多个重载形式,最常用的形式是:

public void Clear(Color color);

其中,color为要填充的颜色。下面是一个示例:

using System.Drawing;

// 创建一个位图对象
Bitmap bitmap = new Bitmap(400, 300);

// 创建一个画布对象
Graphics g = Graphics.FromImage(bitmap);

// 清除画布表面,填充指定的颜色
g.Clear(Color.White);

// 在画布上绘制一些图形
g.DrawLine(Pens.Red, new Point(0, 0), new Point(400, 300));
g.DrawRectangle(Pens.Blue, new Rectangle(100, 100, 200, 100));
g.DrawString("Hello, world!", new Font("Arial", 16), Brushes.Black, new PointF(50, 50));

// 释放资源
g.Dispose();
bitmap.Save("test.png", ImageFormat.Png);

在上述代码中,我们首先创建了一个位图对象和一个画布对象,然后调用Clear方法清除画布表面,并填充白色。接着,在画布上绘制了一些图形。最后,调用Dispose方法释放资源,并将绘制的图形保存为PNG格式的文件。

8. Graphics.DrawLine

C# Graphics.DrawLine是一个用于绘制直线的方法。它是从Graphics类中派生出来的,因此您需要实例化Graphics对象才能使用该方法。

DrawLine方法有几个重载形式,但最基本的形式需要四个参数:Pen对象、起点坐标(x1, y1)、终点坐标(x2, y2)。Pen对象定义了线条的属性,如颜色、宽度等。

以下是一个使用DrawLine方法绘制一条直线的示例:

private void Form1_Paint(object sender, PaintEventArgs e)
{
    Pen pen = new Pen(Color.Black, 2);
    e.Graphics.DrawLine(pen, 10, 10, 100, 100);
}

在这个示例中,我们创建了一个黑色宽度为2像素的Pen对象,并调用Graphics对象的DrawLine方法来绘制一条从(10,10)到(100,100)的直线。

9. Graphics.DrawRectangle

C# Graphics.DrawRectangle是一个用于绘制矩形的方法。它也是从Graphics类中派生出来的,因此您需要实例化Graphics对象才能使用该方法。

DrawRectangle方法有几个重载形式,但最基本的形式需要四个参数:Pen对象、左上角坐标(x, y)、宽度和高度。Pen对象定义了矩形边框的属性,如颜色、宽度等。

以下是一个使用DrawRectangle方法绘制一个矩形的示例:

private void Form1_Paint(object sender, PaintEventArgs e)
{
    Pen pen = new Pen(Color.Black, 2);
    Rectangle rect = new Rectangle(10, 10, 100, 100);
    e.Graphics.DrawRectangle(pen, rect);
}

10. Graphics.DrawRectangle

C# Graphics.DrawEllipse是一个用于绘制椭圆的方法。它也是从Graphics类中派生出来的,因此您需要实例化Graphics对象才能使用该方法。

DrawEllipse方法有几个重载形式,但最基本的形式需要四个参数:Pen对象、左上角坐标(x, y)、宽度和高度。Pen对象定义了椭圆边框的属性,如颜色、宽度等。

以下是一个使用DrawEllipse方法绘制一个椭圆的示例:

private void Form1_Paint(object sender, PaintEventArgs e)
{
    Pen pen = new Pen(Color.Black, 2);
    Rectangle rect = new Rectangle(10, 10, 100, 200);
    e.Graphics.DrawEllipse(pen, rect);
}

在这个示例中,我们创建了一个黑色宽度为2像素的Pen对象,并创建一个Rectangle对象表示左上角坐标为(10,10),宽度为100,高度为200的矩形,然后调用Graphics对象的DrawEllipse方法来绘制这个椭圆。

11. Graphics.DrawPolygon

C# Graphics.DrawPolygon是一个用于绘制多边形的方法。它也是从Graphics类中派生出来的,因此您需要实例化Graphics对象才能使用该方法。

DrawPolygon方法有几个重载形式,但最基本的形式需要两个参数:Pen对象和PointF数组。Pen对象定义了多边形边框的属性,如颜色、宽度等。而PointF数组则包含了多边形各个顶点的坐标。

以下是一个使用DrawPolygon方法绘制一个三角形的示例:

private void Form1_Paint(object sender, PaintEventArgs e)
{
    Pen pen = new Pen(Color.Black, 2);
    PointF[] points = { new PointF(100, 100), new PointF(150, 50), new PointF(200, 100) };
    e.Graphics.DrawPolygon(pen, points);
}

在这个示例中,我们创建了一个黑色宽度为2像素的Pen对象,并创建了一个包含三个顶点坐标的PointF数组,然后调用Graphics对象的DrawPolygon方法来绘制这个三角形。

12. Graphics.DrawString

C#中的Graphics.DrawString方法可以用于在指定位置绘制指定字符串。该方法通常与Graphics对象一起使用,该对象表示要在其上绘制的图形表面。

下面是Graphics.DrawString方法的语法:

public void DrawString(string s, Font font, Brush brush, float x, float y);

参数说明:

  • s:要绘制的字符串。
  • font:用于绘制字符串的字体。
  • brush:用于绘制字符串的画刷。
  • x 和 y:字符串的左上角位置坐标。

此外,还有其他重载版本的DrawString方法,它们可以接受不同的参数来控制字符串的布局、对齐方式、格式等。

13. Graphics.FillRectangle

C#中的Graphics.FillRectangle方法可以用于在指定矩形内绘制填充颜色。

下面是Graphics.FillRectangle方法的语法:

public void FillRectangle(Brush brush, float x, float y, float width, float height);

参数说明:

  • brush:用于填充矩形区域的画刷。
  • x 和 y:矩形左上角的位置坐标。
  • width 和 height:矩形的宽度和高度。

此外,还有其他重载版本的FillRectangle方法,它们可以接受不同的参数来控制填充颜色、矩形的圆角半径等。

14. Graphics.FillEllipse

C#中的Graphics.FillEllipse方法可以用于在指定矩形内绘制填充椭圆。

下面是Graphics.FillEllipse方法的语法:

public void FillEllipse(Brush brush, float x, float y, float width, float height);

参数说明:

  • brush:用于填充椭圆区域的画刷。
  • x 和 y:椭圆左上角的位置坐标。
  • width 和 height:椭圆的宽度和高度。

此外,还有其他重载版本的FillEllipse方法,它们可以接受不同的参数来控制填充颜色、椭圆的圆角半径等。

14. Graphics.FillPolygon

C# Graphics.FillPolygon 方法用于填充多边形。

方法语法如下:

public void FillPolygon (System.Drawing.Brush brush, System.Drawing.Point[] points);

其中,参数 brush 表示要用于绘制多边形的画刷(Brush),参数 points 是一个包含多边形顶点坐标的数组。顶点坐标按照连接顺序传递,即多边形的第一个点和最后一个点应该是相邻的。

以下是一个示例:

// 创建画布
Bitmap bmp = new Bitmap(300, 300);
Graphics g = Graphics.FromImage(bmp);
g.Clear(Color.White);

// 绘制一个三角形
Point[] points = { new Point(50, 50), new Point(150, 50), new Point(100, 150) };
SolidBrush brush = new SolidBrush(Color.Red);
g.FillPolygon(brush, points);

// 将图像保存为文件
bmp.Save("triangle.png", ImageFormat.Png);

这段代码将创建一个大小为 300x300 的空白画布,并在上面绘制一个红色的三角形。最后将整个画布保存为一个 PNG 图像文件。

  • 3
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器人自动化控制

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值