protected virtual Point[] GetEffectiveArea()
        {
            List <Point>        result = new List <Point>();
            IEnumerable <Point> enumPoints;
            int count = EffectSpriteColor.Length;

            if (count < ZipCount)
            {
                enumPoints = ShiftPosition.EnumIt(SpriteColorSize, Point.One, ShiftPositionPropensity.LineByLine);
            }
            else if (count < ZipCount * 3)
            {
                enumPoints = ShiftPosition.EnumIt(SpriteColorSize, Point.One, ShiftPositionPropensity.Random512);
            }
            else if (count < ZipCount * 6)
            {
                enumPoints = ShiftPosition.EnumIt(SpriteColorSize, Point.One, ShiftPositionPropensity.Interval2);
            }
            else
            {
                enumPoints = ShiftPosition.EnumIt(SpriteColorSize, Point.One, ShiftPositionPropensity.Interval3);
            }

            foreach (Point enumPoint in enumPoints)
            {
                JPColor enumPointColor = SpriteColor[enumPoint.X, enumPoint.Y];
                if (enumPointColor.A > 0.25)
                {
                    result.Add(enumPoint);
                }
            }
            return(result.ToArray());
        }
 protected virtual IEnumerable <Point> GetShiftPosition() => ShiftPosition.EnumIt(EffectSpriteColorSize, SpriteColorSize, Propensity);