سؤال

أنا أستخدم MsChart وأريد تمكين التكبير على محور X وبمجرد تكبير هذا ، أريد أن يقوم المحور Y بالتكبير التلقائي في نطاق مناسب للبيانات.

أي مساعدة في المشكلة ستكون موضع تقدير كبير!

شكرًا

هل كانت مفيدة؟

المحلول

لا يمكن إنجاز نوع التكبير الذي تريد القيام به تلقائيًا بواسطة MSChart. بمجرد استرجاع نطاق "التكبير-في" X-Value من المستخدم ، تحتاج إلى كتابة المزيد من التعليمات البرمجية لإعادة تعيين تحجيم المحور Y بشكل مناسب.

يعمل هذا بسهولة أكبر إذا كنت تستخدم نمط خط لسلسلة البيانات ويتم تخزين بيانات المصدر لتلك السلسلة كقائمة فرعية.

Dim firstXindex as Int32 = myDataSeries.IndexOfKey(firstXzoomValue)
Dim lastXindex as Int32 = myDataSeries.IndexOfKey(lastXzoomValue)    

Dim minY as Double = 1.7E+308
Dim maxY as Double = -1.7E+308  


For i = firstXindex To lastXindex
    If myDataSeries.GetByIndex(i) > maxY Then
        maxY = myDataSeries.GetByIndex(i)
    End If
    If myDataSeries.GetByIndex(i) < minY Then
        minY = myDataSeries.GetByIndex(i)
    End If
Next

بمجرد استخدام شيء مثل الرمز أعلاه للحصول على Miny و Maxy ، يمكنك بعد ذلك استخدام هذه القيم لإعادة ضبط قيم Min و Max Y على الرسم البياني:

With myChartArea
  .AxisY.Maximum = maxY
  .AxisY.Minimum = minY
End With

نصائح أخرى

كنت أبحث عن حل لفترة طويلة. لقد وجدت هذا مفيدًا. اشترك في حدث Axisvaluechanged واستخدم ScaleView لتعديل العرض.

private void chart1_AxisViewChanged(object sender, ViewEventArgs e)
    {
        if (e.Axis.AxisName == AxisName.X)
        {
            int start = (int)e.Axis.ScaleView.ViewMinimum;
            int end = (int)e.Axis.ScaleView.ViewMaximum;

            double[] temp = chart1.Series[0].Points.Where((x, i) => i >= start && i <= end).Select(x => x.YValues[0]).ToArray();
            double ymin = temp.Min();
            double ymax = temp.Max();

            chart1.ChartAreas[0].AxisY.ScaleView.Position = ymin;
            chart1.ChartAreas[0].AxisY.ScaleView.Size = ymax - ymin;
        }
    }

لقد أتاحت Microsoft أ مجموعة كاملة من العينات للتنزيل. في تطبيق العينة هناك واحد يسمى مظهر قابل للتمرير يبدو أن هذا يفعل ما تريد.

المظهر القابل للتمرير http://img502.imageshack.us/img502/5172/zoomablechart.png

يمكن للمستخدم تحديد ومساحة الرسم البياني وسيقوم بالتكبير. يمكنهم أيضًا التحرك باستخدام أشرطة التمرير.

C# يتم تضمين رمز نموذج مع التنزيل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top