2011-07-10 10 views
7

Sto cercando un widget o un controllo per tracciare una serie temporale di dati. Fondamentalmente trama (x, y) dove x e y sono vettori Nx1. Sto cercando ma non ho trovato molto e ogni suggerimento sarebbe fantastico! Grazie.Consigli per il componente grafico (grafico)?

+5

Nel mondo di Windows, si chiama un 'controllo', non un 'Widget'. –

+0

C'è qualcosa di sbagliato in TChart che viene fornito con C++ Builder? –

+0

Il TChart, pronto per l'uso, con TFastLineSeries porterà a termine il lavoro –

risposta

9

Utilizzare TeeChart, fornito con Delphi. Ottimo per le serie temporali e anche i grafici in tempo reale.

+1

E se vuoi il disegno anti-aliasing del Chart sullo schermo, puoi salvarlo in un file EMF, quindi renderlo usando il nostro [Open Source GDI + wrapper] (http://blog.synopse.info/post/2010/ 02/04/Antialiased-disegno-da-TMetaFile). L'ho usato su diversi progetti (tramite il nostro motore di report), e ha funzionato bene. Il buon vecchio TChart sta guardando molto meglio usando il disegno GDI +, almeno per il lato cliente finale. –

8

Preferisco TJvChart dallo Jedi VCL library, ma poi ho scritto TJvChart, o la maggior parte di esso comunque. Il motivo per cui lo raccomando è che è gratuito, ma presenta alcuni limiti, tra cui la mancanza di capacità di zoom-in e zoom-out adeguate.

Non mi piace utilizzare alcun componente nelle mie app che non include il codice sorgente e, in generale, cautela nei confronti dell'uso di componenti closed source in qualsiasi progetto serio, quindi pianificare l'acquisto del codice sorgente di TeeChart se è necessario usa il componente. Comunque non sono anti-Tee Chart; Se scegli di usarlo in un progetto commerciale, vai avanti è anche grandioso. Basta essere consapevoli che è davvero il 100% che vale la pena acquistare la fonte per qualsiasi cosa tu voglia veramente usare in modo serio.

Avvio rapido: 1. Scaricare e installare JVCL. 2. Aprire demo JvChart incluse.

Tutorial stile Stackoverflow: 1. rilasciare TJvChart su un modulo. 2. scrittura di questo codice:

JvChart1.Options.PenCount := 1; 
    JvChart1.Data.ValueCount := 3; 
    // set values for [penIndex=0, valueIndex=0..2 ] 
    JvChart1.Data.Value[0, 1] := 1; 
    JvChart1.Data.Value[0, 2] := 3; 
    JvChart1.Data.Value[0, 3] := 5; 
    JvChart1.PlotGraph; 

enter image description here

+3

TeeChart viene fornito con il codice sorgente. Devi solo pagare per questo. Qualsiasi progetto serio IMHO dovrebbe utilizzare componenti ben supportati, commerciali o meno (e ottenere sempre il codice sorgente per un progetto a lungo termine è sempre consigliabile). Altrimenti il ​​tuo argomento potrebbe essere usato per usare FPC/Lazarus invece di Delphi, perché Delphi è un'applicazione closed source che non viene fornita con il codice sorgente completo. –

+0

Che offre prestazioni migliori con set di dati di grandi dimensioni? –

+0

@David, devo dire che non ho esperienza con JvChart. TeeChart ha TFastLineSeries come hai menzionato. Impostando DrawAllPoints su False avrà un grande impatto sulla velocità di disegno. Inoltre è possibile definire tutte le serie al di fuori di TeeChart che riduce l'ingombro della memoria per le grandi serie. Vedi [www.teechart.net/reference/articles/index.php] per ulteriori informazioni. Questo è difficile da battere in termini di prestazioni per una libreria standard, anche se sto utilizzando un componente cucinato in casa in alcune delle mie applicazioni che richiede uno stato più elevato di affidabilità. –