전체 소스 올려봅니다. 


정답을 의미하는 소스는 아니며 아래 코드를 참조하여 응용하여 개발하시기 바랍니다. 


위치를 잡아내는 코드가 다소 복잡하지만 정형화된 코드라 한 번 작성해보시면 이해가 되실 겁니다. 

(차트내의 포인트는 상대 값이고 드래그의 포인트는 윈도우 스크린의 절대 값이라 그것을 정리하는 코드라고 할 수 있습니다)


드래그를 하면 해당 영역이 확대되고 


더블클릭을 하면 원래 상태로 돌아오는 코드입니다. 






 private void Form1_Load(object sender, EventArgs e)

        { 

            Draw2();  

        }


        private void Draw2()

        {


            SeriesList sList = new SeriesList();

            sList.ChartType = ChartType.Line;

            sList.AxisFactor.XAxis.DataType = AxisDataType.Number;


            Random r = new Random();

            for (int i = 0; i < 1; i++)

            {

                Series sr = new Series();

                sr.Column.DesignType = AreaDesignType.Gradation;

                sr.Line.LineWidth = 5;


                for (int x = 0; x < 20; x++)

                {

                    SeriesItem item = new SeriesItem();

                    item.Name = x.ToString();

                    item.XValue = x;

                    item.YValue = r.Next(200);


                    sr.items.Add(item);

                }

                sList.SeriesCollection.Add(sr);

            }


            this.hHippoChart1.SeriesListDictionary.Add(sList);

            this.hHippoChart1.DrawChart();

        }


        private void hHippoChart1_ChartMouseDrag(object sender, EventArgs e)

        {

            // 마우스로 드래그할 때 발생 

        }


        private void hHippoChart1_ChartMouseMove(object sender, MouseEventArgs e)

        {

            rec = this.hHippoChart1.DragRectangle; 

        }


        private void hHippoChart1_ChartMouseUp(object sender, MouseEventArgs e)

        {

            if (e.Button == MouseButtons.Left)

            {

                SeriesItemCollection items =this.hHippoChart1.SeriesListDictionary[0].SeriesCollection[0].items;


                double zeroX = this.hHippoChart1.SeriesListDictionary[0].AxisFactor.Zero.X;

                double zeroY = this.hHippoChart1.SeriesListDictionary[0].AxisFactor.Zero.Y;

 

                double maxvalue = double.MinValue;

                double minvalue = double.MaxValue;


                bool ret = false;


                double recnewX = zeroX + ( rec.Left - this.Location.X - this.hHippoChart1.Location.X);

                double recnewY = zeroY - ( rec.Top - this.Location.Y - this.hHippoChart1.Location.Y);


                foreach (SeriesItem item in items)

                {

                    if (item.FigurePoint.X > recnewX && item.FigurePoint.X < recnewX + rec.Width &&

                        item.FigurePoint.Y > recnewY && item.FigurePoint.Y < recnewY + rec.Height

                        )

                    {

                        if (item.XValue >= maxvalue)

                        {

                            maxvalue = item.XValue;

                        }


                        if (item.XValue <= minvalue)

                        {

                            minvalue = item.XValue;

                        }


                        ret = true;

                    } 

                }


                if (ret)

                {

                    this.hHippoChart1.SeriesListDictionary[0].AxisFactor.XAxis.SetAxisStep(minvalue, maxvalue,1);

                    //this.hHippoChart1.SeriesListDictionary[0].AxisFactor.YAxis.SetAxisStep(minvalue, maxvalue, this.hHippoChart1.SeriesListDictionary[0].AxisFactor.YAxis.Interval);

                    this.hHippoChart1.DrawChart(); 

                }


            }

        } 


        private void hHippoChart1_ChartDoubleClick(object sender, EventArgs e)

        {

            this.hHippoChart1.SeriesListDictionary[0].AxisFactor.XAxis.IsAutoSetting = true;

            //this.hHippoChart1.SeriesListDictionary[0].AxisFactor.YAxis.SetAxisStep(minvalue, maxvalue, this.hHippoChart1.SeriesListDictionary[0].AxisFactor.YAxis.Interval);

            this.hHippoChart1.DrawChart();

        }

사업자 정보 표시
히포차트 | 하영대 | 경기도 성남시 수정구 복정동 631-5 401 | 사업자 등록번호 : 129-34-55719 | TEL : 031-751-6673 | Mail : hippochart@gmail.com | 통신판매신고번호 : 제 2010-경기성남-1203호 | 사이버몰의 이용약관 바로가기

Posted by 리바이 병장

댓글을 달아 주세요



/* 다음 웹인사이드 로그 분석*/