/// <summary> /// left,top,right,bottomの順番で、変数をセットする /// </summary> /// <param name="rC"></param> public void Set(MCRect rC) { Set(rC.left, rC.top, rC.right, rC.bottom); }
public bool Equals(MCRect r) { return(left == r.left && right == r.right && top == r.top && bottom == r.bottom); }
/// <summary> /// コンストラクタ /// </summary> /// <param name="rC"></param> public MCRect(MCRect rC) { Set(rC); }
/// <summary> /// 位置と幅高から、mcRect構造に変換する、フラグによって左右上下逆にすることもできる /// srcを元にクリッピングをする /// </summary> /// <param name="src">対象範囲</param> /// <param name="r1">ここに変換後のmcRectを格納する</param> /// <param name="r2">ここに変換後のmcRectを格納する</param> /// <param name="x">座標X</param> /// <param name="y">座標Y</param> /// <param name="width">幅</param> /// <param name="height">高さ</param> /// <param name="flg">上下左右するか決定するフラグ</param> /// <returns>クリッピングされた場合はtrueを返す。</returns> bool GetClippingRect2(MCRect src, out MCRect r1, out MCRect r2, int x, int y, int width, int height, int flg = 0) { int n; r1 = new MCRect(x, y, x + width, y + height); r2 = new MCRect(); if (left >= r1.right) { r1.Set(0, 0, 0, 0); return(false); } else if (right <= r1.left) { r1.Set(0, 0, 0, 0); return(false); } else if (top >= r1.bottom) { r1.Set(0, 0, 0, 0); return(false); } else if (bottom <= r1.top) { r1.Set(0, 0, 0, 0); return(false); } if (top > r1.top) { n = top - r1.top; r1.top += n; r2.top += n; } if (bottom < r1.bottom) { n = r1.bottom - bottom; r1.bottom -= n; r2.bottom -= n; } if (left > r1.left) { n = left - r1.left; r1.left += n; r2.left += n; } if (right < r1.right) { n = r1.right - right; r1.right -= n; r2.right -= n; } if ((flg & FLIP_VERTICAL) > 0) { // 上下反転 n = r1.top; r1.top = r1.bottom; r1.bottom = n; } if ((flg & FLIP_HORIZONTAL) > 0) { // 左右反転 n = r1.left; r1.left = r1.right; r1.right = n; } return(true); }