You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现判断Rectangle是否位于Bitmap内的C#函数

实现思路与代码建议

首先,明确核心判断逻辑:要让矩形完全位于Bitmap范围内,需确保矩形的所有边界都不超出Bitmap的宽高范围,结合你提到的x/y≥0的前提,具体判断条件如下:

  • 矩形的左边界:rec.X ≥ 0(虽然你说明x≥0,但保留判断可提升代码鲁棒性)
  • 矩形的上边界:rec.Y ≥ 0(同上)
  • 矩形的右边界:rec.X + rec.Width ≤ 位图宽度(这里位图宽为500)
  • 矩形的下边界:rec.Y + rec.Height ≤ 位图高度(这里位图高为500)
  • 额外校验:rec.Width > 0 和 rec.Height > 0,避免宽高为0或负数的无效矩形

优化后的代码实现

你当前代码里每次创建Bitmap实例完全没必要,因为尺寸固定为500x500,直接用常量即可,减少不必要的资源消耗:

public bool RectangleIsinBitmap(Rectangle rec)
{
    const int BitmapWidth = 500;
    const int BitmapHeight = 500;
    
    // 组合所有判断条件
    return rec.X >= 0 
        && rec.Y >= 0 
        && rec.Width > 0 
        && rec.Height > 0 
        && rec.X + rec.Width <= BitmapWidth 
        && rec.Y + rec.Height <= BitmapHeight;
}

补充说明

如果后续位图尺寸可能动态变化,建议把位图的宽高作为参数传入函数,而不是硬编码,这样代码复用性更强:

public bool RectangleIsinBitmap(Rectangle rec, int bitmapWidth, int bitmapHeight)
{
    return rec.X >= 0 
        && rec.Y >= 0 
        && rec.Width > 0 
        && rec.Height > 0 
        && rec.X + rec.Width <= bitmapWidth 
        && rec.Y + rec.Height <= bitmapHeight;
}

内容的提问来源于stack exchange,提问作者saugandh k

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 08:02:07