コード例 #1
0
        public void ScrollContentSmooth(int NewPosition, ScrollContentDelegate ScrollFunc)
        {
            double OldPosition = Scrollable.VRange.Span.Pos;
            double Position    = OldPosition;

            double       Duration       = 400; // milliseconds
            const double AnimationSteps = 1;   // animation steps

            Timer  timer        = new Timer();
            double StartTime    = timer.Milliseconds();
            double EndTime      = StartTime + Duration;
            double StepDuration = Duration / AnimationSteps;

            for (int i = 0; i < AnimationSteps; i++)
            {
                Position = OldPosition + (NewPosition - OldPosition) * (double)i / AnimationSteps;
                if ((timer.Milliseconds() - StartTime) / Duration <= (double)i / AnimationSteps)
                {
                    ScrollFunc((int)Position);
                    RaiseNeedRedraw();
                }
            }
            ScrollFunc(NewPosition);
            RaiseNeedRedraw();
        }
コード例 #2
0
        public void ScrollContentSmooth(int NewPosition, ScrollContentDelegate ScrollFunc)
        {
            double OldPosition = Scrollable.VRange.Span.Pos;
            double Position = OldPosition;

            double Duration = 400; // milliseconds
            const double AnimationSteps = 1; // animation steps

            Timer timer = new Timer();
            double StartTime = timer.Milliseconds();
            double EndTime = StartTime + Duration;
            double StepDuration = Duration / AnimationSteps;

            for (int i = 0; i < AnimationSteps; i++)
            {
                Position = OldPosition + (NewPosition - OldPosition) * (double)i / AnimationSteps;
                if ((timer.Milliseconds() - StartTime) / Duration <= (double)i / AnimationSteps)
                {
                    ScrollFunc((int)Position);
                    RaiseNeedRedraw();
                }
            }
            ScrollFunc(NewPosition);
            RaiseNeedRedraw();
        }