Ejemplo n.º 1
0
 public static void Draw(Canvas canvas, IViewport viewport, IStyle style, IFeature feature)
 {
     var lineString = ((LineString) feature.Geometry).Vertices;
     var paints = style.ToAndroid();
     //using (var paint = new Paint {Color = Color.Black, StrokeWidth = 8, AntiAlias = true})
     foreach (var paint in paints)
     {
         var vertices = lineString;
         var points = vertices.ToAndroid();
         WorldToScreen(viewport, points);
         canvas.DrawLines(points, paint);
         paint.Dispose();
     }
 }
Ejemplo n.º 2
0
        protected override void OnDraw(Android.Graphics.Canvas canvas)
        {
            base.OnDraw(canvas);
            var half        = canvas.Height / 2;
            var left        = 0;
            var right       = canvas.Width - 2;
            var top         = 0;
            var bottom      = canvas.Height - 1;
            var offsetPlier = 1;

            float[] points = null;
            switch (orientation)
            {
            case ArrowOrientation.Left:
                points = new float[] {
                    right, top,
                    left, half,
                    left, half,
                    right, bottom
                };
                offsetPlier = 1;
                break;

            case ArrowOrientation.Right:
                points = new float[] {
                    left, top,
                    right, half,
                    right, half,
                    left, bottom
                };
                offsetPlier = -1;
                break;
            }

            for (int dx = 0; dx < 5; dx++)
            {
                canvas.DrawLines(Offset(points, offsetPlier * dx, 0), arrowPaint);
            }
        }
Ejemplo n.º 3
0
        public override void Draw(Canvas canvas)
        {
            //Console.WriteLine("EqualizerPresetGraphView - Draw - Width: {0} Height: {1}", Width, Height);

            float padding = 6 * Resources.DisplayMetrics.Density;
            float heightAvailable = Height - (padding*2);            

            var paintRect = new Paint {
                AntiAlias = true,
                Color = Color.ParseColor("#222222")
            };
            paintRect.SetStyle(Paint.Style.Fill);
            canvas.DrawRect(new Rect(0, 0, Width, Height), paintRect);

            if (_preset == null)
                return;

            // Draw center line
            var paintCenterLine = new Paint {
                AntiAlias = true,
                Color = Color.DarkGray
            };
            paintCenterLine.SetStyle(Paint.Style.Fill);
            paintCenterLine.StrokeWidth = 2f;
            canvas.DrawLine(padding, Height / 2, Width - padding, Height / 2, paintCenterLine);

            // Draw 20Hz and 20kHz lines
            paintCenterLine.StrokeWidth = 1f;
            canvas.DrawLine(padding, padding, padding, Height - padding, paintCenterLine);
            canvas.DrawLine(Width - padding, padding, Width - padding, Height - padding, paintCenterLine);

            var paintText = new Paint {
                AntiAlias = true,
                Color = Color.Gray,
                TextSize = 14 * Resources.DisplayMetrics.Density
            };
            float textWidth = paintText.MeasureText(_preset.Bands[_preset.Bands.Count - 1].CenterString);
            canvas.DrawText(_preset.Bands[0].CenterString, padding * 2, Height - (padding * 2), paintText);
            canvas.DrawText(_preset.Bands[_preset.Bands.Count - 1].CenterString, Width - textWidth - (padding * 2), Height - (padding * 2), paintText);

            if (_preset == null)
                return;

            // Draw equalizer line
            var points = new List<float>();
            var paintEQLine = new Paint
            {
                AntiAlias = true,
                Color = Color.Yellow
            };
            paintEQLine.SetStyle(Paint.Style.Stroke);
            paintEQLine.StrokeWidth = 2f * Resources.DisplayMetrics.Density;
            float x = padding;
            for (int a = 0; a < _preset.Bands.Count; a++)
            {
                // Value range is -6 to 6.
                var band = _preset.Bands[a];
                //float ratio = (band.Gain + 6) / (padding * 2);
                float ratio = (band.Gain + 6f) / 12f;
                float y = padding + heightAvailable - (ratio * (Height - (padding * 2)));

                //Console.WriteLine("EqualizerPresetGraphView - Draw - Width: {0} Height: {1} ratio: {2} x: {3} y: {4} padding: {5} heightAvailable: {6}", Width, Height, ratio, x, y, padding, heightAvailable);
                points.Add(x);
                points.Add(y);

                // Add the same point a second time because Android needs start/end for each segment
                if (a > 0 && a < _preset.Bands.Count - 1)
                {
                    points.Add(x);
                    points.Add(y);
                }

                x += (Width - (padding * 2)) / (_preset.Bands.Count - 1);
            }
            canvas.DrawLines(points.ToArray(), paintEQLine);
        }