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.
Kontrolka chart.
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 :)
Nowy wątek i inkrementacja wartości źródła i odświeżanie kontrolki. Ewentualnie technologia WPF.
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);
}
}