示例#1
0
        public void ScrollView(double distance, ScrollingSpeeds speedLever)
        {
            double intervalRatio = GetSpeedRatio(speedLever);

            lock (locker)
            {
                if (Math.Sign(distance) != Math.Sign(remain))
                {
                    remain = (int)distance;
                }
                else
                {
                    remain += (int)(distance * (round < AccelerateThreshold ? 1 : Accelerator));
                }

                round         = 0;
                totalDistance = remain;
            }

            totalRounds = CalulateTotalRounds(intervalRatio, totalDistance);

            if (workingThread == null)
            {
                workingThread = new Thread(ScrollingThread);
                workingThread.Start();
            }
        }
示例#2
0
        private double GetSpeedRatio(ScrollingSpeeds speedLever)
        {
            var speedTable = new Dictionary <ScrollingSpeeds, double>()
            {
                { ScrollingSpeeds.Slow, 1.5 },
                { ScrollingSpeeds.Normal, 1.0 },
                { ScrollingSpeeds.Fast, 0.65 }
            };

            return(speedTable[speedLever]);
        }
        private void textBox_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
        {
            e.Handled = true;

            ScrollingSpeeds scrollingSpeeds = ScrollingSpeeds.Normal;

            if (radioSlow.IsChecked ?? false)
            {
                scrollingSpeeds = ScrollingSpeeds.Slow;
            }
            else if (radioFast.IsChecked ?? false)
            {
                scrollingSpeeds = ScrollingSpeeds.Fast;
            }

            scrollController.ScrollView(e.Delta, scrollingSpeeds);
        }
示例#4
0
        public void ScrollView(double distance, ScrollingSpeeds speedLever)
        {
            double intervalRatio = GetSpeedRatio(speedLever);

            lock (locker)
            {
                if (Math.Sign(distance) != Math.Sign(remain))
                {
                    remain = (int)distance;
                }
                else
                {
                    remain += (int)(distance * (round < AccelerateThreshold ? 1 : Accelerator));
                }

                round         = 0;
                totalDistance = remain;
            }

            totalRounds = CalculateTotalRounds(intervalRatio, totalDistance);

            startScrollEvent.Set();
        }
示例#5
0
 private double GetSpeedRatio(ScrollingSpeeds speedLever)
 {
     return(speedTable[speedLever]);
 }