C# GraphicsPath 类学习

先在窗体放2个picturebox,

然后看一下如下代码;

cs 复制代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing.Drawing2D;

namespace yuanpic
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            GraphicsPath gp = new GraphicsPath();
            gp.AddEllipse(pictureBox2.ClientRectangle);
            Region region = new Region(gp);
            pictureBox2.Region = region;
            gp.Dispose();
            region.Dispose();
        }
    }
}

说是可以把picturebox变为圆形;运行如下;

还不太了解,先看一下 GraphicsPath 类;

GraphicsPath 类

命名空间:

System.Drawing.Drawing2D

程序集:

System.Drawing.Common.dll

表示一系列相互连接的直线和曲线。 此类不能被继承。

应用程序使用路径绘制形状轮廓、填充形状的内部以及创建剪裁区域。 图形引擎在世界坐标空间的路径中维护几何形状的坐标。

路径可能由 (子路径) 的任意数字组成。 每个图都由连接线和曲线序列或几何形状基元组成。 图的起点是连接线和曲线序列中的第一个点。 终点是序列中的最后一个点。 几何形状基元的起点和终点由基元规范定义。

一个包含连接线和曲线序列的图, (其起点和终点可能是巧合的,) 是一个打开的数字,除非它显式关闭。 通过使用该方法可以显式关闭图, CloseFigure 该方法通过将一行从终点连接到起点来关闭当前图。 由几何形状基元组成的图是封闭图。

例如,为了填充和剪裁 (,如果使用) 呈现 FillPath 路径,则所有打开的数字都通过从图的第一个点向最后一个点添加一行来关闭。

创建路径或关闭图时,将隐式启动新图。 调用方法时 StartFigure ,将显式创建一个新图。

将几何形状基元添加到路径时,它会添加包含几何形状的图形,并隐式启动一个新图形。 因此,路径中始终存在当前图。 将线条和曲线添加到路径时,根据需要添加隐式线条,以便将当前图的终点连接到新线条和曲线的起点,以形成连接线和曲线序列。

图有一个方向,描述在起点和终点之间如何跟踪线条和曲线段。 方向按照将线条和曲线添加到图形的顺序定义,或由几何形状基元定义。 方向用于确定剪裁和填充的路径内部。

有如下的构造函数,

GraphicsPath()

GraphicsPath(FillMode)

GraphicsPath(Point[], Byte[])

GraphicsPath(Point[], Byte[], FillMode)

GraphicsPath(PointF[], Byte[])

GraphicsPath(PointF[], Byte[], FillMode)

其方法可以,

向当前图形追加一段椭圆弧;

在当前图形中添加一段立方贝塞尔曲线;

在当前图形中添加一系列相互连接的立方贝塞尔曲线;

向此路径添加一个闭合曲线, 由于曲线经过数组中的每个点,因此使用基数样条曲线;

向当前图形添加一段样条曲线;

向当前路径添加一个椭圆;

向当前图形追加一条线段;

向此 GraphicsPath 末尾追加一系列相互连接的线段;

将指定的 GraphicsPath 追加到该路径;

等;

相关推荐
程序设计实验室5 小时前
一次小而美的重构:使用 C# 在 Avalonia 中生成真正好看的词云
c#
电商api接口开发6 小时前
ASP.NET MVC 入门指南二
前端·c#·html·mvc
o0向阳而生0o9 小时前
28、.NET 中元数据是什么?
microsoft·c#·.net
niuTaylor10 小时前
Linux驱动开发快速上手指南:从理论到实战
linux·运维·开发语言·驱动开发·c#
军训猫猫头10 小时前
89.WPF 中实现便捷的数字输入框:DecimalUpDown 控件的使用 WPF例子 C#例子.
开发语言·c#·wpf
冰茶_12 小时前
.NET MAUI 发展历程:从 Xamarin 到现代跨平台应用开发框架
学习·microsoft·微软·c#·.net·xamarin
The Future is mine13 小时前
C# new Bitmap(32043, 32043, PixelFormat.Format32bppArgb)报错:参数无效,如何将图像分块化处理?
开发语言·c#
Iotfsd20 小时前
.NET写的开源工业物联网网关(IoTGateway)
物联网·c#·.net·dotnet·边缘网关·雾计算·工业物联网智能网关
先生沉默先20 小时前
c#接口_抽象类_多态学习
开发语言·学习·c#
江沉晚呤时20 小时前
深入了解C# List集合及两种常见排序算法:插入排序与堆排序
windows·sql·算法·oracle·c#·排序算法·mybatis