Ejemplo n.º 1
0
 /// <summary>
 /// 檢查移動調整值數量,超出上限時移除多餘項目
 /// </summary>
 /// <param name="stepOffset">移動調整值</param>
 public void CheckOffset()
 {
     if (Offsets.Count > OffsetsLimit)
     {
         for (int i = 0; i < Offsets.Count - OffsetsLimit; i++)
         {
             MoveX -= Offsets[i].X;
             MoveY -= Offsets[i].Y;
         }
         Offsets.RemoveRange(0, Offsets.Count - OffsetsLimit);
         OnOffsetsChanged();
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 加入移動調整值並檢查移動調整值數量,超出上限時移除多餘項目
        /// </summary>
        /// <param name="stepOffset">移動調整值</param>
        public void AddOffset(PointF stepOffset)
        {
            if (_NextOffsetFixX != 0 || _NextOffsetFixY != 0)
            {
                stepOffset      = new PointF(stepOffset.X + _NextOffsetFixX, stepOffset.Y + _NextOffsetFixY);
                _NextOffsetFixX = 0;
                _NextOffsetFixY = 0;
            }

            MoveX += stepOffset.X;
            MoveY += stepOffset.Y;

            Offsets.Add(stepOffset);
            if (Offsets.Count > OffsetsLimit)
            {
                for (int i = 0; i < Offsets.Count - OffsetsLimit; i++)
                {
                    MoveX -= Offsets[i].X;
                    MoveY -= Offsets[i].Y;
                }
                Offsets.RemoveRange(0, Offsets.Count - OffsetsLimit);
            }
            OnOffsetsChanged();
        }