Example #1
0
        public Bitmap GetView(Size area, ITransformer transformer)
        {
            var logger = new Logger("GetView1.txt");//log

            var opts = (RoundOptions)viewState.GetCurrent();

            var bitmapChart = new Bitmap(area.Width, area.Height);
            var scale       = opts.ScalePercents / 100;
            var size        = (int)Math.Round(Math.Min(area.Width * scale, area.Height * scale));
            var gr          = Graphics.FromImage(bitmapChart);

            gr.SmoothingMode     = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            gr.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBilinear;

            gr.Clear(Color.White);

            var circlePen = new Pen(opts.CircleColor);

            gr.DrawEllipse(circlePen, opts.CircleThickness, opts.CircleThickness, size, size);
            Point?last = null;

            //log
            logger.WriteLog(String.Format("Transform lenth is: {0}", transformer.GetSpectrum()[0].Length));

            foreach (var freq in opts.GetCurrent(transformer))
            {
                //log
                logger.WriteLog(String.Format("Freq is {0}, X is: {1}, Y is: {2}", freq.Freq, freq.Coords.Real, freq.Coords.Imaginary));
                var value = freq.Coords;
                if (double.IsNaN(value.Real) || double.IsNaN(value.Imaginary))
                {
                    break;
                }

                Point?current = new Point((int)Math.Round((value.Real * size + size) / 2),
                                          (int)Math.Round((value.Imaginary * size + size) / 2));

                var pointBr = new SolidBrush(opts.PointColor);
                var rad     = opts.PointRadius;
                gr.FillEllipse(pointBr, current.Value.X - rad, current.Value.Y - rad, 2 * rad, 2 * rad);

                if (last != null)
                {
                    gr.DrawLine(Pens.Orange, last.Value, current.Value);
                }

                var freqStr = freq.Freq.ToString();
                gr.DrawString(freqStr, opts.TextFont, Brushes.Black, current.Value.X - rad,
                              current.Value.Y - rad);

                last = current;
            }

            logger.Flush();//log
            return(bitmapChart);
        }
Example #2
0
        private void UpdateSpectrum()
        {
            //var normSignal = norm.Norm(signal.Sum);

            lock (spectrum)
            {
                spectrum = transformer.GetSpectrum(signal.Sum, FreqSize, FreqStep, StartFreq);
            }

            if (Retransformed != null)
            {
                Retransformed();
            }
        }
Example #3
0
 //текущий спектр
 public FreqPoint[] GetCurrent(ITransformer transformer)
 {
     return(transformer.GetSpectrum()[currentSpec]);
 }