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

2024-01-25 22:20

本文主要是介绍C# 在矩形内获取一个指定大小的矩形(两个矩形的中心点是重合的),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

示例1:

using System.Drawing;public class RectangleUtils
{public static Rectangle GetInnerRectangle(Rectangle outerRectangle, Size innerSize){// 计算内部矩形的左上角坐标int left = outerRectangle.Left + (outerRectangle.Width - innerSize.Width) / 2;int top = outerRectangle.Top + (outerRectangle.Height - innerSize.Height) / 2;// 返回内部矩形return new Rectangle(left, top, innerSize.Width, innerSize.Height);}public static void Main(){// 定义外部矩形Rectangle outerRectangle = new Rectangle(100, 100, 400, 300);// 定义内部矩形的大小Size innerSize = new Size(200, 150);// 获取内部矩形Rectangle innerRectangle = GetInnerRectangle(outerRectangle, innerSize);// 输出内部矩形的坐标和大小Console.WriteLine("内部矩形的坐标:({0}, {1})", innerRectangle.Left, innerRectangle.Top);Console.WriteLine("内部矩形的大小:{0}x{1}", innerRectangle.Width, innerRectangle.Height);}
}

在上面的代码中,GetInnerRectangle 方法接受一个外部矩形和一个内部矩形的大小作为参数。它计算内部矩形的左上角坐标,并返回一个新的 Rectangle 对象。

 

在 Main 方法中,我们定义了一个外部矩形和一个内部矩形的大小。然后,调用 GetInnerRectangle 方法获取内部矩形,并输出其坐标和大小。

 

请注意,上述代码假设内部矩形的大小不会超出外部矩形的范围。如果内部矩形的大小超过了外部矩形的大小,需要进行适当的边界检查和处理。

 

示例2:

 

using System.Drawing; // 如果是Windows Forms或GDI+// 假设已有一个大的Rectangle对象rectParent和你想要创建的小矩形尺寸sizeChild
Rectangle rectParent;
Size sizeChild;// 计算小矩形中心点在大矩形内的坐标,保证两者中心点重合
Point centerOfBothRects = new Point(rectParent.X + rectParent.Width / 2,rectParent.Y + rectParent.Height / 2
);// 根据中心点坐标和小矩形尺寸创建新的小矩形
Rectangle rectChild = new Rectangle(centerOfBothRects.X - sizeChild.Width / 2,centerOfBothRects.Y - sizeChild.Height / 2,sizeChild.Width,sizeChild.Height
);// 检查小矩形是否完全在大矩形内(由于已经确保中心点重合,通常不需要此步骤)
if (rectParent.Contains(rectChild))
{// 小矩形成功在大矩形内生成并且中心点与大矩形中心点重合
}
else
{// 在这种情况下理论上不会发生,除非sizeChild超出rectParent范围// 可能需要调整大小以适应大矩形
}

这段代码首先计算了大矩形的中心点坐标,并假设这个坐标就是小矩形的中心点。然后根据小矩形的尺寸从中心点向两边扩展来创建小矩形,确保两个矩形的中心点重合。如果事先知道小矩形尺寸始终小于等于大矩形尺寸,则无需检查rectParent.Contains(rectChild)

 

这篇关于C# 在矩形内获取一个指定大小的矩形(两个矩形的中心点是重合的)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/644793

相关文章

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

c# checked和unchecked关键字的使用

《c#checked和unchecked关键字的使用》C#中的checked关键字用于启用整数运算的溢出检查,可以捕获并抛出System.OverflowException异常,而unchecked... 目录在 C# 中,checked 关键字用于启用整数运算的溢出检查。默认情况下,C# 的整数运算不会自

C#实现获得某个枚举的所有名称

《C#实现获得某个枚举的所有名称》这篇文章主要为大家详细介绍了C#如何实现获得某个枚举的所有名称,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... C#中获得某个枚举的所有名称using System;using System.Collections.Generic;usi

C# 读写ini文件操作实现

《C#读写ini文件操作实现》本文主要介绍了C#读写ini文件操作实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、INI文件结构二、读取INI文件中的数据在C#应用程序中,常将INI文件作为配置文件,用于存储应用程序的

C#实现获取电脑中的端口号和硬件信息

《C#实现获取电脑中的端口号和硬件信息》这篇文章主要为大家详细介绍了C#实现获取电脑中的端口号和硬件信息的相关方法,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 我们经常在使用一个串口软件的时候,发现软件中的端口号并不是普通的COM1,而是带有硬件信息的。那么如果我们使用C#编写软件时候,如

C#中图片如何自适应pictureBox大小

《C#中图片如何自适应pictureBox大小》文章描述了如何在C#中实现图片自适应pictureBox大小,并展示修改前后的效果,修改步骤包括两步,作者分享了个人经验,希望对大家有所帮助... 目录C#图片自适应pictureBox大小编程修改步骤总结C#图片自适应pictureBox大小上图中“z轴

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如

C#实现WinForm控件焦点的获取与失去

《C#实现WinForm控件焦点的获取与失去》在一个数据输入表单中,当用户从一个文本框切换到另一个文本框时,需要准确地判断焦点的转移,以便进行数据验证、提示信息显示等操作,本文将探讨Winform控件... 目录前言获取焦点改变TabIndex属性值调用Focus方法失去焦点总结最后前言在一个数据输入表单