C# 找出两个Rectangle或是矩形的相互重合与非重合部分?

一、找出两个Rectangle或是矩形的相互重合与非重合部分?

示例代码1,求非重合部分:

使用GraphicsPath获取到非重合的路径,然后使用FillPath填充非重合部分Brush颜色。

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

public class Program
{
    public static void Main()
    {
        // 假设你已经有了两个Rectangle,rect1和rect2
		Rectangle rect1 = new Rectangle(new Point(10, 10), new Size(50, 50));
		Rectangle rect2 = new Rectangle(new Point(20, 20), new Size(40, 40));

		// 创建两个 GraphicsPath 对象
		GraphicsPath path1 = new GraphicsPath();
		GraphicsPath path2 = new GraphicsPath();

		// 向第一个 GraphicsPath 对象添加较大矩形
		path1.AddRectangle(rect1);

		// 向第二个 GraphicsPath 对象添加较小矩形
		path2.AddRectangle(rect2);

		// 创建两个 Region 对象,一个用于第一个 GraphicsPath,一个用于第二个 GraphicsPath
		Region region1 = new Region(path1);
		Region region2 = new Region(path2);

		// 使用 Exclude 方法计算两个 Region 对象的差集
		region1.Exclude(region2);

		// 创建一个Brush对象来填充非重叠部分的颜色
		SolidBrush m_Brush = new SolidBrush(Color.Red);

		// 使用Graphics.FillPath方法填充非重叠部分
		using (Graphics g = this.CreateGraphics())
		{
		     g.FillRegion(m_Brush, region1);
		}

    }
}

示例代码2,求重合部分::

使用GraphicsPath获取到重合的路径,然后使用FillPath填充重合部分Brush颜色。

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

public class Program
{
    public static void Main()
    {
        // 假设你已经有了两个Rectangle,rect1和rect2
		Rectangle rect1 = new Rectangle(new Point(10, 10), new Size(50, 50));
		Rectangle rect2 = new Rectangle(new Point(20, 20), new Size(40, 40));

		// 创建两个 GraphicsPath 对象
		GraphicsPath path1 = new GraphicsPath();
		GraphicsPath path2 = new GraphicsPath();

		// 向第一个 GraphicsPath 对象添加较大矩形
		path1.AddRectangle(rect1);

		// 向第二个 GraphicsPath 对象添加较小矩形
		path2.AddRectangle(rect2);

		// 创建两个 Region 对象,一个用于第一个 GraphicsPath,一个用于第二个 GraphicsPath
		Region region1 = new Region(path1);
		Region region2 = new Region(path2);

		// 使用 Intersect 方法计算两个 Region 对象的差集
		region1.Intersect(region2);

		// 创建一个Brush对象来填充非重叠部分的颜色
		SolidBrush m_Brush = new SolidBrush(Color.Red);

		// 使用Graphics.FillPath方法填充非重叠部分
		using (Graphics g = this.CreateGraphics())
		{
		     g.FillRegion(m_Brush, region1);
		}

    }
}

二、在矩形内获取一个指定大小的矩形(两个矩形的中心点是重合的)

C# 在矩形内获取一个指定大小的矩形(两个矩形的中心点是重合的)-CSDN博客

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

wangnaisheng

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

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

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

打赏作者

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

抵扣说明:

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

余额充值