Beispiel #1
0
 /// <summary>
 /// left,top,right,bottomの順番で、変数をセットする
 /// </summary>
 /// <param name="rC"></param>
 public void Set(MCRectF rC)
 {
     Set(rC.left, rC.top, rC.right, rC.bottom);
 }
Beispiel #2
0
 public bool Equals(MCRectF r)
 {
     return(left == r.left && right == r.right && top == r.top && bottom == r.bottom);
 }
Beispiel #3
0
 /// <summary>
 /// コンストラクタ
 /// </summary>
 /// <param name="rC"></param>
 public MCRectF(MCRectF rC)
 {
     Set(rC);
 }
Beispiel #4
0
        /// <summary>
        /// 位置と幅高から、MCRectF構造に変換する、フラグによって左右上下逆にすることもできる
        /// srcを元にクリッピングをする
        /// </summary>
        /// <param name="src">対象範囲</param>
        /// <param name="r1">ここに変換後のMCRectFを格納する</param>
        /// <param name="r2">ここに変換後のMCRectFを格納する</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(MCRectF src, out MCRectF r1, out MCRectF r2, float x, float y, float width, float height, int flg = 0)
        {
            float n;

            r1 = new MCRectF(x, y, x + width, y + height);
            r2 = new MCRectF();

            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);
        }