public RoundSpectrum(RoundOptions options) { opts = options; DoubleBuffered = true; //если в спектре только один вариант положения окна, то не имеет смысла показывать трекер if (opts.SpecSize > 1) { var tracker = new WindowTracker(opts); tracker.Dock = DockStyle.Bottom; tracker.Invalidated += (sender, ev) => { Invalidate(); }; Controls.Add(tracker); } //фишка для увеличения графика при помощи скролла. Пока не работает. MouseWheel += (sender, ev) => { opts.ZoomScale(1.1); var log = new Logger("zoom.txt"); log.WriteLog(opts.ScalePercents.ToString()); log.Flush(); }; Invalidate(); }
public SpectrumViewManager(FreqPoint[][] spectrum) { var opts = new RoundOptions(spectrum); view = new RoundSpectrum(opts); view.Dock = DockStyle.Fill; view.Invalidated += (sender, ev) => { Invalidate(); }; Controls.Add(view); }
public WindowTracker(RoundOptions options, int size) { var trackLabel = new Label { Font = options.TextFont, Text = String.Format("Центр окна: {0}\n", 0), AutoSize = true, Location = new Point(ClientRectangle.Width / 2, 0) }; //создание бегунка для смещения центра окна var winTrack = new TrackBar { Orientation = Orientation.Horizontal, TickFrequency = options.WinStep, Maximum = size, Location = new Point(0, trackLabel.Height), TickStyle = TickStyle.BottomRight }; winTrack.Scroll += (sender, ev) => { options.ViewSpec(winTrack.Value); trackLabel.Text = String.Format("Центр окна: {0}\n", winTrack.Value); Invalidate(); }; Controls.Add(winTrack); Controls.Add(trackLabel); Resize += (sender, ev) => { trackLabel.Location = new Point((ClientRectangle.Width - trackLabel.Width) / 2, 0); winTrack.SetBounds(0, trackLabel.Height, ClientRectangle.Width, 50); }; }