2009-10-26 10 views
10

Sto implementando un grafico a dispersione utilizzando MS Chart Control .NET 3.5, WinForms, C#. I miei dati asse x è DateTime e ho notato non ho potuto ingrandire più piccolo di una risoluzione di 1 giorno, nonostante l'impostazione della ScaleView come segue:MS Chart Control Zoom MinSize issue

chart1.ChartAreas["MyChart"].AxisX.ScaleView.MinSize = 4; 
chart1.ChartAreas["MyChart"].AxisX.ScaleView.MinSizeType = DateTimeIntervalType.Hours; 

chiunque altro ha avuto questo problema? Qualche idea?

risposta

10

Capito così ... forse non avevo RTFM abbastanza vicino, ma non era evidente dalla demo interattiva.

Set

chart1.ChartAreas["MyChart"].CursorX.Interval = 0; 

e poi mi ha permesso di ingrandire lungo l'asse x bene.

+0

Ho cercato di capirlo per un po ': non posso zoomare con una risoluzione inferiore a 1. Contento di aver finalmente trovato la tua risposta. Sono assolutamente d'accordo che questo non era ovvio dalla demo! –

+0

questo è fantastico. Non dovrò mai più sentire il mio capo lamentarsi di questo. – RussellStewart

7

Funziona alla grande! Molto utile e obbligatorio se si desidera avere un comportamento di zoom uniforme.
Non hai inciampare su di esso, anche se ho fatto RTFM :-)

Tuttavia, se si gestisce doppie o galleggianti, invece di tipi interi base (come ore o giorni), impostare l'intervallo di zero può essere un po ' po 'estrema: Durante lo zoom, si finirà per avere etichette eccessivamente dettagliate, ad esempio 2,907343253253235

Una buona combinazione è quella di utilizzare queste due proprietà:

chartArea1.AxisY.ScaleView.MinSize = 0; 
chartArea1.CursorY.Interval = 0.001; 

questo modo è possibile eseguire lo zoom quanto si vuole , pur continuando a controllare la precisione a un livello ragionevole