private void DrawHue()
        {
            //var col = new HSVColor();
            var bmp      = (WriteableBitmap)HueImage.Source;
            var pix      = new Byte[bmp.PixelWidth * bmp.PixelHeight * 4];
            var hueSteps = 360.0 / bmp.PixelHeight;

            //col.Hue = 0.0;
            var hue = 0d;

            for (var y = 0; y < bmp.PixelHeight; y++)
            {
                hue += hueSteps;
                //col.Hue += hueSteps;
                var col = OxyColor.FromHsv((double)y / bmp.PixelHeight, 1, 1);
                for (var x = 0; x < bmp.PixelWidth; x++)
                {
                    var offset = x * 4 + y * bmp.PixelWidth * 4;
                    pix[offset++] = col.B;
                    pix[offset++] = col.G;
                    pix[offset++] = col.R;
                    pix[offset]   = col.A;
                }
            }

            bmp.WritePixels(new Int32Rect(0, 0, bmp.PixelWidth, bmp.PixelHeight), pix, 4 * bmp.PixelWidth, 0);
        }
Пример #2
0
        public void CompareGraph(List <List <DateTimeOffset> > messages, string interval, string OrderID, byte[] bg, string[] names, double repeat)
        {
            PlotModel plot = new PlotModel();

            plot.Axes.Add(new DateTimeAxis {
                Position = AxisPosition.Bottom, Maximum = DateTimeAxis.ToDouble(DateTime.Now)
            });
            plot.Axes.Add(new LinearAxis {
                Position = AxisPosition.Left
            });

            int step = 0;

            foreach (List <DateTimeOffset> submessages in messages)
            {
                OxyColor   color  = OxyColor.FromHsv(25 * step + 25, 75, 100);
                LineSeries result = internal_ActivityGraph(submessages.ToArray(), interval, color, repeat);
                if (result == null)
                {
                    continue;
                }
                else
                {
                    result.Title = names[step] + " - " + result.Points.Count + " Datapoints";
                    plot.Series.Add(result);
                }
                step++;
            }

            var pngExporter = new PngExporter {
                Width = 1800, Height = 600, Background = OxyColor.FromArgb(bg[3], bg[0], bg[1], bg[2])
            };

            pngExporter.ExportToFile(plot, OrderID + ".png");
        }
        private void RedrawColorImages()
        {
            var hsv = SelectedColor.ToHsv();
            //hsv[0] = 1;

            //var col = new HSVColor(SelectedColor.Hue, SelectedColor.Saturation, SelectedColor.Value, SelectedColor.A);
            var bmp = (WriteableBitmap)ColorImage.Source;
            var pix = new byte[bmp.PixelWidth * bmp.PixelHeight * 4];

            for (var y = 0; y < bmp.PixelHeight; y++)
            {
                hsv[2] = 1.0 - y / (double)bmp.PixelHeight;
                for (var x = 0; x < bmp.PixelWidth; x++)
                {
                    hsv[1] = x / (double)bmp.PixelWidth;
                    var col = OxyColor.FromHsv(hsv);

                    var offset = x * 4 + y * bmp.PixelWidth * 4;
                    pix[offset++] = col.B;
                    pix[offset++] = col.G;
                    pix[offset++] = col.R;
                    pix[offset]   = col.A;
                }
            }

            bmp.WritePixels(new Int32Rect(0, 0, bmp.PixelWidth, bmp.PixelHeight), pix, 4 * bmp.PixelWidth, 0);

            RedrawColorSliders();
        }
Пример #4
0
        private Tuple <LineSeries, Queue <Tuple <DateTime, DataPoint> > > GetSerie(string senderID)
        {
            Tuple <LineSeries, Queue <Tuple <DateTime, DataPoint> > > value;

            if (!_series.TryGetValue(senderID, out value))
            {
                var isServer = senderID.StartsWith(Server.ServerSenderID);

                var serie = new LineSeries(senderID)
                {
                    MarkerType            = isServer ? MarkerType.Circle: Symbols[_series.Count % Symbols.Length],
                    MarkerStrokeThickness = 1.5,
                    LineStyle             = LineStyle.None,
                    Color        = OxyColors.Transparent,
                    MarkerSize   = isServer ? 1 : 4.0,
                    MarkerStroke = _series.Count >= Colors.Length ?
                                   OxyColor.FromHsv(Math.Round(_random.NextDouble(), 1), 1.0, 0.5)
                                                : Colors[_series.Count]
                };

                value = new Tuple <LineSeries, Queue <Tuple <DateTime, DataPoint> > >(serie, new Queue <Tuple <DateTime, DataPoint> >());

                _series.Add(senderID, value);

                DataModel.Series.Add(serie);
            }

            return(value);
        }
Пример #5
0
        public OxyColor GetColor(int value, int nColors)
        {
            if (value == -1)
            {
                return(OxyColor.FromHsv(0, 1, 1));
            }
            var delta = 240.0 / (360.0 * (nColors));
            var hue   = (240.0 / 360.0) - (delta * (value));

            return(OxyColor.FromHsv(hue, 1, 1));
        }
Пример #6
0
        public void pieChartSetting()
        {
            //People
            modelLineChart = new PlotModel {
                Title = "Car"
            };
            dynamic seriesP1 = new PieSeries {
                StrokeThickness = 2.0, InsideLabelPosition = 0.8, AngleSpan = 360, StartAngle = 0
            };

            String[] colorNames = { "Orange", "Yellow", "YelloGreen", "Green", "Cyan", "Blue", "Purple", "Red" };
            double[] Hue        = { 1.0, 3.0, 5.0, 8.0, 12.0, 15.0, 18.0, 22.0 };
            for (int i = 0; i < Hue.Length; i++)
            {
                seriesP1.Slices.Add(new PieSlice(colorNames[i], colorRatioCar[i])
                {
                    IsExploded = false, Fill = OxyColor.FromHsv(Hue[i] / 24, 0.7, 0.9)
                });
            }
            seriesP1.Slices.Add(new PieSlice("White", colorRatioCar[8])
            {
                IsExploded = false, Fill = OxyColors.Ivory
            });
            seriesP1.Slices.Add(new PieSlice("Black", colorRatioCar[9])
            {
                IsExploded = false, Fill = OxyColor.FromRgb(80, 80, 80)
            });
            modelLineChart.Series.Add(seriesP1);
            //Car
            modelPieChartPeople = new PlotModel {
                Title = "People"
            };
            dynamic seriesP2 = new PieSeries {
                StrokeThickness = 2.0, InsideLabelPosition = 0.8, AngleSpan = 360, StartAngle = 0
            };

            for (int i = 0; i < Hue.Length; i++)
            {
                seriesP2.Slices.Add(new PieSlice(colorNames[i], colorRatioPeople[i])
                {
                    IsExploded = false, Fill = OxyColor.FromHsv(Hue[i] / 24, 0.7, 0.9)
                });
            }
            seriesP2.Slices.Add(new PieSlice("White", colorRatioPeople[8])
            {
                IsExploded = false, Fill = OxyColors.Ivory
            });
            seriesP2.Slices.Add(new PieSlice("Black", colorRatioPeople[9])
            {
                IsExploded = false, Fill = OxyColor.FromRgb(80, 80, 80)
            });
            modelPieChartPeople.Series.Add(seriesP2);
        }
        private void HueImage_OnMouseMove(object sender, MouseEventArgs e)
        {
            if (e.LeftButton != MouseButtonState.Pressed)
            {
                Mouse.Capture(null);
                return;
            }

            HueImage.CaptureMouse();

            var pos = Mouse.GetPosition(HueImage);
            var hsv = SelectedColor.ToHsv();

            hsv[0]        = Max(0, Min(1, pos.Y / HueImage.ActualHeight));
            SelectedColor = OxyColor.FromHsv(hsv);
            UpdateSelectedColor();
            RedrawColorImages();
        }
Пример #8
0
        public void Create_LargeImageToPng()
        {
            int w    = 266;
            int h    = 40;
            var data = new OxyColor[w, h];

            for (int y = 0; y < h; y++)
            {
                for (int x = 0; x < w; x++)
                {
                    data[x, y] = OxyColor.FromHsv((double)x / w, 1, 1);
                }
            }

            var img   = OxyImage.Create(data, ImageFormat.Png);
            var bytes = img.GetData();

            File.WriteAllBytes(@"Imaging\LargeImage.png", bytes);
        }
Пример #9
0
        public void PngFromArgb2()
        {
            int w    = 266;
            int h    = 40;
            var data = new OxyColor[h, w];

            for (int i = 0; i < h; i++)
            {
                for (int j = 0; j < w; j++)
                {
                    data[i, j] = OxyColor.FromHsv((double)j / w, 1, 1);
                }
            }

            var img   = OxyImage.PngFromArgb(data);
            var bytes = img.GetData();

            File.WriteAllBytes("PngFromArgb2.png", bytes);
        }
Пример #10
0
        public void AddSeries(List<float> data, string title, double hue)
        {
            var lineSeries = new LineSeries
            {
                StrokeThickness = 2,
                MarkerSize = 3,
                MarkerStroke = OxyColor.FromHsv(hue, 60, 44),
                CanTrackerInterpolatePoints = true,
                Title = title,
                Smooth = false
            };

            int i = 1;
            data.ForEach(dataPoint =>
            {
                lineSeries.Points.Add(new DataPoint(i, dataPoint));
                i++;
            });
            _plotModel.Series.Add(lineSeries);
        }
        private void ColorImage_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.LeftButton != MouseButtonState.Pressed)
            {
                Mouse.Capture(null);
                return;
            }

            Mouse.Capture(ColorImage);

            var hsv = SelectedColor.ToHsv();
            var pos = Mouse.GetPosition(ColorImage);

            pos.X  = Max(0, Min(ColorImage.ActualWidth, pos.X));
            pos.Y  = Max(0, Min(ColorImage.ActualHeight, pos.Y));
            hsv[1] = pos.X / ColorImage.ActualWidth;
            hsv[2] = 1 - pos.Y / ColorImage.ActualHeight;
            //SelectedColor.Saturation = pos.X / ColorImage.ActualWidth;
            //SelectedColor.Brightness = 1 - pos.Y / ColorImage.ActualHeight;
            SelectedColor = OxyColor.FromHsv(hsv);
            UpdateSelectedColor();
            RedrawColorSliders();
        }
Пример #12
0
 public void FromHsv()
 {
     Assert.AreEqual(OxyColors.Red, OxyColor.FromHsv(0, 1, 1));
 }