本文主要是介绍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和rect2Rectangle 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,一个用于第二个 GraphicsPathRegion 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和rect2Rectangle 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,一个用于第二个 GraphicsPathRegion 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博客
这篇关于C# 找出两个Rectangle或是矩形的相互重合与非重合部分?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!