示例#1
0
        private void pChart_MouseUp(object sender, MouseEventArgs e)
        {
            //Clear previous selection
            m_pActiveView.GraphicsContainer.DeleteAllElements();

            //Remove the selection in this Chart
            while (pChart.Series.Count != m_intTotalNSeries)
            {
                pChart.Series.RemoveAt(pChart.Series.Count - 1);
            }

            //Remove the selection in DN Chart
            while (m_pDNChart.Series.Count != m_intTotalNSeriesDN)
            {
                m_pDNChart.Series.RemoveAt(m_pDNChart.Series.Count - 1);
            }

            _canDraw = false;

            HitTestResult result = pChart.HitTest(e.X, e.Y);



            int dblOriPtsSize    = pChart.Series[m_lstPtSeriesID[0]].MarkerSize;
            int intTotalSriCount = m_lstPtSeriesID.Count;

            int intSelLinesCount = 0;

            List <int> lstColIdx = new List <int>();
            List <int> lstRowIdx = new List <int>();

            for (int i = 0; i < intTotalSriCount; i++)
            {
                int intSeriesID = m_lstPtSeriesID[i];
                int intPtsCount = pChart.Series[intSeriesID].Points.Count;

                for (int j = 0; j < intPtsCount; j++)
                {
                    int intX = (int)pChart.ChartAreas[0].AxisX.ValueToPixelPosition(pChart.Series[intSeriesID].Points[j].XValue);
                    int intY = (int)pChart.ChartAreas[0].AxisY.ValueToPixelPosition(pChart.Series[intSeriesID].Points[j].YValues[0]);

                    System.Drawing.Point SelPts = new System.Drawing.Point(intX, intY);

                    if (_rect.Contains(SelPts))
                    {
                        double dblXOffset = (pChart.Series[intSeriesID].Points[j].XValue) - Math.Round(pChart.Series[intSeriesID].Points[j].XValue, 0);

                        System.Drawing.Color BrushingColor = System.Drawing.Color.Red;
                        var seriesLines = new System.Windows.Forms.DataVisualization.Charting.Series
                        {
                            Name              = "SelLines" + intSelLinesCount.ToString(),
                            Color             = BrushingColor,
                            BorderColor       = BrushingColor,
                            IsVisibleInLegend = false,
                            IsXValueIndexed   = false,
                            //ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line,
                            ChartType   = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line,
                            MarkerStyle = System.Windows.Forms.DataVisualization.Charting.MarkerStyle.Circle,
                            MarkerSize  = dblOriPtsSize * 2
                        };
                        m_pDNChart.Series.Add(seriesLines);

                        System.Drawing.Color pMarkerColor = System.Drawing.Color.Cyan;
                        var seriesUncerLines = new System.Windows.Forms.DataVisualization.Charting.Series
                        {
                            Name              = "SelLines" + intSelLinesCount.ToString(),
                            Color             = pMarkerColor,
                            BorderColor       = pMarkerColor,
                            IsVisibleInLegend = false,
                            IsXValueIndexed   = false,
                            //ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line,
                            ChartType   = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line,
                            MarkerStyle = System.Windows.Forms.DataVisualization.Charting.MarkerStyle.Circle,
                            MarkerSize  = dblOriPtsSize * 2
                        };

                        pChart.Series.Add(seriesUncerLines);

                        intSelLinesCount++;
                        int   intSelLocationIdx = m_lstPtsIdContainer[i][j];
                        int[] dblSelValues      = m_lstIDsValues[intSelLocationIdx];
                        for (int k = 0; k < m_intLyrCnt; k++)
                        {
                            int intYvalue = m_lstIDsValues[intSelLocationIdx][3 + k];
                            seriesLines.Points.AddXY(k + dblXOffset, intYvalue);
                        }
                        for (int k = 0; k < m_intClsCnt; k++)
                        {
                            int intYvalue = m_lstIDsValues[intSelLocationIdx][3 + m_intLyrCnt + k];
                            seriesUncerLines.Points.AddXY(k + dblXOffset, intYvalue);
                        }

                        DrawPointsOnActiveView(m_lstIDsValues[intSelLocationIdx][0], m_lstIDsValues[intSelLocationIdx][1], m_pRasterProps, m_pActiveView);
                        lstColIdx.Add(m_lstIDsValues[intSelLocationIdx][0]);
                        lstRowIdx.Add(m_lstIDsValues[intSelLocationIdx][1]);
                    }
                }
            }
            frmVisEntropy pfrmVisEntropy = System.Windows.Forms.Application.OpenForms["frmVisEntropy"] as frmVisEntropy;

            BrushPointsOnMCPlot(lstColIdx, lstRowIdx, m_pRasterProps, pfrmVisEntropy);

            if (intSelLinesCount == 0)
            {
                m_pActiveView.GraphicsContainer.DeleteAllElements();
                m_pActiveView.Refresh();
            }
        }
示例#2
0
        private void BrushPointsOnMCPlot(List <int> colindex, List <int> rowindex, IRasterProps pRasterProps, frmVisEntropy pfrmVisEntropy)
        {
            int   intLength        = colindex.Count;
            Chart pVisEntChart     = pfrmVisEntropy.pChart;
            int   intLastSeriesIdx = pVisEntChart.Series.Count - 1;

            //Remove Previous Selection
            if (pVisEntChart.Series[intLastSeriesIdx].Name == "SelPoints")
            {
                pVisEntChart.Series.RemoveAt(intLastSeriesIdx);
            }

            if (intLength == 0)
            {
                return;
            }

            int dblOriPtsSize = pVisEntChart.Series[0].MarkerSize;

            System.Drawing.Color pMarkerColor = System.Drawing.Color.Red;
            var seriesPts = new System.Windows.Forms.DataVisualization.Charting.Series
            {
                Name              = "SelPoints",
                Color             = pMarkerColor,
                BorderColor       = pMarkerColor,
                IsVisibleInLegend = false,
                IsXValueIndexed   = false,
                ChartType         = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point,
                MarkerStyle       = System.Windows.Forms.DataVisualization.Charting.MarkerStyle.Circle,
                MarkerSize        = dblOriPtsSize * 2
            };

            pVisEntChart.Series.Add(seriesPts);

            for (int i = 0; i < intLength; i++)
            {
                int intSelID = (colindex[i] * pRasterProps.Height) + rowindex[i];
                seriesPts.Points.AddXY(pfrmVisEntropy.m_Entropies[intSelID], pfrmVisEntropy.m_laggedEntropies[intSelID]);
            }
        }