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