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); }
// 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); }