当前位置:   article > 正文

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

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

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

示例1:

  1. using System.Drawing;
  2. public class RectangleUtils
  3. {
  4. public static Rectangle GetInnerRectangle(Rectangle outerRectangle, Size innerSize)
  5. {
  6. // 计算内部矩形的左上角坐标
  7. int left = outerRectangle.Left + (outerRectangle.Width - innerSize.Width) / 2;
  8. int top = outerRectangle.Top + (outerRectangle.Height - innerSize.Height) / 2;
  9. // 返回内部矩形
  10. return new Rectangle(left, top, innerSize.Width, innerSize.Height);
  11. }
  12. public static void Main()
  13. {
  14. // 定义外部矩形
  15. Rectangle outerRectangle = new Rectangle(100, 100, 400, 300);
  16. // 定义内部矩形的大小
  17. Size innerSize = new Size(200, 150);
  18. // 获取内部矩形
  19. Rectangle innerRectangle = GetInnerRectangle(outerRectangle, innerSize);
  20. // 输出内部矩形的坐标和大小
  21. Console.WriteLine("内部矩形的坐标:({0}, {1})", innerRectangle.Left, innerRectangle.Top);
  22. Console.WriteLine("内部矩形的大小:{0}x{1}", innerRectangle.Width, innerRectangle.Height);
  23. }
  24. }

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

 

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

 

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

 

示例2:

 

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

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

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/45230
推荐阅读
相关标签
  

闽ICP备14008679号