Rysowanie słupków - win forms

0

Hej,
mam pojedynczą tabele z numerami magazynów oraz stanem dla każdego z nich ( jest ich 16 ).
Chciałbym napisać aplikację, która zaprezentuje te dane na formie w postaci słupków pionowych lub poziomych ( jeśli poziome to na każdym z nich wartość danego magazynu ).
Proszę Was o wskazówki czego użyć aby to ładnie osiągnąć. Fajnie by było aby np spod przycisku - refresh i/lub co x czasu odświeżać wszystko tak aby słupki nie pojawiały się tak po prostu tylko szybko urosły do wartości danego magazynu.

0

Kontrolka chart.

0

no tak dzięki wielki orzeł. Użycie tego jest bardzo proste bo już to zrobiłem. Czy da się zrobić wzrost barów w chart`ie?
Myślałem też by użyć pictureBox i rysować w nim prostokąty :)

0

Nowy wątek i inkrementacja wartości źródła i odświeżanie kontrolki. Ewentualnie technologia WPF.

0

mam jeszcze pytanie
otóż, w model

 
        public static IEnumerable<Magazyn> GetStock()
        {
            
            return (from item in DB.StanyMagazynowe
                    select new Magazyn
                    {
                        magazyn = item.magazynKod,
                        nazwa = item.magazynNazwa,
                        iloscProduktu = (double)item.iloscProduktu
                    }
                      ).ToList();
        }

wyświetlam chart w taki sposób

 
        public Form1()
        {
            InitializeComponent();

            IEnumerable<Magazyn> mag = Model.GetStock();

            foreach(Magazyn mg in mag)
            {               
                this.chart1.Series["stan"].Points.AddXY(mg.magazynKod, mg.iloscProduktu);
            }
        }

Rezultatem jest ładny prosty wykres columnowy z jedną serią, nad każdym słupkiem wypisana jest wart/ilość danego magazynu.
brakuje mi do szczęścia nazwy magazynu. Super gdyby udało się umieścić tą nazwę na każdym słupku w pionie. Jak to osiągnąć?

P.S.
dodatkowo ( zupełnie jakby się to komuś przydało ) dorobiłem coś takiego co pozwala po najechaniu myszką na słupek w tooltipie wyświetlić to co jest na wykresie czyli kod magazynu i ilość oraz pozycję x i y kursora myszy

 
        private void chart1_MouseMove(object sender, MouseEventArgs e)
        {  
            Point mousePoint = new Point(e.X, e.Y);

            chart1.ChartAreas[0].CursorX.Interval = 0;
            chart1.ChartAreas[0].CursorY.Interval = 0;
            
            chart1.ChartAreas[0].CursorX.SetCursorPixelPosition(mousePoint, true);
            chart1.ChartAreas[0].CursorY.SetCursorPixelPosition(mousePoint, true);

            label1.Text = "X pos: " + chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.X).ToString();
            label2.Text = "Y pos: " + chart1.ChartAreas[0].AxisY.PixelPositionToValue(e.Y).ToString();

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

            if (result.PointIndex > -1 && result.ChartArea != null)
            {
                tooltip.Show("X=" + result.Series.Points[result.PointIndex].XValue + ", Y=" + result.Series.Points[result.PointIndex].YValues[0], this.chart1, e.X, e.Y - 15);
            }             
        }

1 użytkowników online, w tym zalogowanych: 0, gości: 1