Esempio n. 1
0
        private void SetEditedPicture(RgbCortage rgbCortage, IList <Rgb> rgbList)
        {
            foreach (var container in rgbCortage.Container)
            {
                foreach (var rad in container)
                {
                    rgbList[rad.Possition] = rad;
                }
            }

            var bmp = new SysDrawing.Bitmap(_filePath);

            Color sColor0 = new Color();
            Color sColor1 = new Color();
            Color sColor2 = new Color();
            Color sColor3 = new Color();

            if (ColorPicker0.SelectedColor != null)
            {
                sColor0 = ColorPicker0.SelectedColor.Value;
            }
            if (ColorPicker1.SelectedColor != null)
            {
                sColor1 = ColorPicker1.SelectedColor.Value;
            }
            if (ColorPicker2.SelectedColor != null)
            {
                sColor2 = ColorPicker2.SelectedColor.Value;
            }
            if (ColorPicker3.SelectedColor != null)
            {
                sColor3 = ColorPicker3.SelectedColor.Value;
            }

            foreach (var container in rgbCortage.Container)
            {
                foreach (var rad in container)
                {
                    var color = new SysDrawing.Color();
                    if (container.Equals(rgbCortage.Container[0]))
                    {
                        color = SysDrawing.Color.FromArgb(sColor0.R, sColor0.G, sColor0.B);
                    }
                    else if (container.Equals(rgbCortage.Container[1]))
                    {
                        color = SysDrawing.Color.FromArgb(sColor1.R, sColor1.G, sColor1.B);
                    }
                    else if (container.Equals(rgbCortage.Container[2]))
                    {
                        color = SysDrawing.Color.FromArgb(sColor2.R, sColor2.G, sColor2.B);
                    }
                    else if (container.Equals(rgbCortage.Container[3]))
                    {
                        color = SysDrawing.Color.FromArgb(sColor3.R, sColor3.G, sColor3.B);
                    }

                    bmp.SetPixel((int)rad.X, (int)rad.Y, color);
                }
            }

            var newFileName = SetNewFileName(_filePath);

            bmp.Save(newFileName);

            var logo = new BitmapImage();

            logo.BeginInit();
            logo.UriSource = new Uri(newFileName);
            logo.EndInit();

            imgTest.Source = logo;

            var path = new PathFinder();

            path.Find(rgbList);
        }
Esempio n. 2
0
        // function for testing 3d scatter plot
        public void DrawScatterPlot(List <Rgb> rgbList)
        {
            if (rgbList == null)
            {
                throw new ArgumentNullException(nameof(rgbList));
            }
            // 1. set scatter chart data no.
            _m_3DChart = new ScatterChart3D();
            _m_3DChart.SetDataNo(rgbList.Count);

            // 2. set property of each dot (size, position, shape, color)
            var nDataRange = 200;

            var zArray = GenZList(rgbList);
            //------------------------------------------------------------------------------------------------//

            var zMax = zArray.Max();
            var zMin = zArray.Min();

            var onePercent = zMax / 100;

            var percents = StaticInterfaceHandler.GetSplitterArray(this);
            var diffs    = ToDiffArray(percents, onePercent);


#warning zArray = SortByDiffs(zArray, diffs, int.Parse(splitterBackage.Text), new[]
            //           {
            //               CheckBoxInvisible.IsChecked != null && CheckBoxInvisible.IsChecked.Value,
            //               CheckBoxInvisible1.IsChecked != null && CheckBoxInvisible1.IsChecked.Value,
            //               CheckBoxInvisible2.IsChecked != null && CheckBoxInvisible2.IsChecked.Value,
            //               CheckBoxInvisible3.IsChecked != null && CheckBoxInvisible3.IsChecked.Value
            //           });

            //------------------------------------------------------------------------------------------------//

            var rgbCortage = new RgbCortage();
            for (var i = 0; i < rgbList.Count; i++)
            {
                // ReSharper disable once CompareOfFloatsByEqualityOperator
                if (zArray[i] == 0)
                {
                    continue;
                }

                var plotItem = new ScatterPlotItem
                {
                    w = 1,
                    h = 1
                };

                var r = rgbList[i].R;
                var g = rgbList[i].G;
                var b = rgbList[i].B;

                plotItem.x = (float)rgbList[i].X;
                plotItem.y = (float)rgbList[i].Y;
                plotItem.z = zArray[i] - 500;
#warning
                //   plotItem.shape = randomObject.Next(4);

                plotItem.shape = (int)Chart3D.Shape.Cylinder;

                plotItem.color = Color.FromRgb(r, g, b);
                ((ScatterChart3D)_m_3DChart).SetVertex(i, plotItem);
            }

            for (var i = 0; i < diffs.Count; i++)
            {
                rgbCortage.RegisterNewContainer(GetBordersLine(zArray, rgbList, diffs[i].From, diffs[i].To,
                                                               new Color()
                {
                    A = diffs[i].Color.A, R = diffs[i].Color.R, G = diffs[i].Color.G, B = diffs[i].Color.B
                }));
            }

            foreach (var container in rgbCortage.Container)
            {
                foreach (var rad in container)
                {
                    var plotItem = new ScatterPlotItem
                    {
                        w     = 1,
                        h     = 1,
                        x     = (float)rad.X,
                        y     = (float)rad.Y,
                        z     = (float)rad.Z - 500,
                        shape = (int)Chart3D.Shape.Cylinder,
                        color = Color.FromArgb(rad.A, rad.R, rad.G, rad.B)
                    };
                    ((ScatterChart3D)_m_3DChart).SetVertex(rad.Possition, plotItem);
                }
            }

            _m_3DChart.GetDataRange();
            _m_3DChart.SetAxes();

            var meshs = ((ScatterChart3D)_m_3DChart).GetMeshes();

            UpdateModelSizeInfo(meshs);

            var model3D = new Model3D();
            MnChartModelIndex = model3D.UpdateModel(meshs, null, MnChartModelIndex, mainViewport);

            var viewRange = (float)nDataRange;
            _mTransformMatrix.CalculateProjectionMatrix(0, viewRange, 0, viewRange, 0, viewRange, 0.5);
            TransformChart();

            SetEditedPicture(rgbCortage, rgbList);
        }