Creare una libreria grafica da zero - pagina 15

 
Altrimenti è fantastico, continua così.
 
Per voi, è molto facile creare controlli su kanvas:

1. Togliete diverse funzioni di disegno dalla classe kanvas, cioè linea verticale, linea di montagna. rettangolo, rettangolo riempito, testo.

2. Per disegnare ogni elemento, scrivere una funzione: void Button(), void Checkbox()... ecc.

3. Nella funzione di elementi di disegno si includono insiemi di chiamate di funzioni di disegno (linee, rettangoli), con cui si "disegna" la struttura del controllo richiesto sulla tela richiesta.

4. un'istanza di ogni elemento creato dovrebbe essere legata alla sua finestra.

5. Le proprietà di ogni istanza creata (testo X, Y, X_SIZE, Y_SIZE...) dovrebbero essere salvate in una matrice o struttura affinché altre funzioni possano leggerle/modificarle.

E poi seguirai lo stesso percorso....)

E tutto questo su tela, attenzione.

 
E se avete bisogno di altri oggetti che potrebbero trovarsi sotto l'oggetto disegnato sullo sfondo principale?
 
Aliaksandr Hryshyn:
E se avete bisogno di altri oggetti che possono stare sotto l'oggetto disegnato sullo sfondo principale?
Fate un esempio. Ci sono molte situazioni diverse con diverse soluzioni.
 
Реter Konow:
Fammi un esempio. Ci sono molte situazioni diverse con diverse soluzioni.

Nella mia situazione, una tela sarebbe probabilmente sufficiente, penso che farò come hai consigliato.

Soprattutto perché c'è già un supporto minimo per i kanvas
 
Ogni finestra è una tela separata e indipendente.

Creare una finestra è semplice come gli altri elementi:

1. la finestra ha semplici proprietà di base di diversi rettangoli regolari che vengono disegnati in modo coerente sulla tela creata chiamando la funzione FilledRectangle() (dalla classe CCanvas) e passando loro dei valori template o utilizzabili.

2. la finestra è disegnata prima dei suoi elementi. Questo viene fatto usando la funzione speciale Draw_window(x, y, w, h); per esempio, chiama FilledRectangle() il numero necessario di volte per costruire la struttura della finestra.

3. Poi, le funzioni sono chiamate per disegnare i controlli. Ognuno di essi è costruito come una finestra, con una serie di rettangoli e cornici disegnati uno alla volta.

4. Le proprietà di ogni istanza di ogni elemento creato dalla chiamata di funzione sono scritte in qualsiasi opzione di memoria disponibile per le altre funzioni, tra cui:

Una funzione che cattura l'evento di trovare il cursore sopra le coordinate dell'elemento disegnato, che su ogni evento di spostamento del cursore fa un ciclo attraverso le coordinate di tutti gli elementi disegnati e disegnati in quella finestra e trova quello direttamente sotto di esso.

Una funzione che fissa l'evento di pressione/repressione sull'elemento sotto il cursore e cambia il suo stato (se è interattivo) chiamando un'altra funzione che cambia i valori dei parametri di quell'elemento (colore, icona...) e lo ridisegna di nuovo.

Questo è sufficiente per iniziare.

 
Roman:

Per l'HFT, penso che il 3D sarebbe utile per creare un'analisi grafica del volume della tazza e del flusso degli ordini.
Ma come interpretare tali informazioni, non ho approfondito.

dove è disponibile?

 
Ci sono diverse categorie di controlli, tra le quali possiamo distinguerne due principali:

1. Decorativo - linee, cornici, rettangoli, icone...

2. "Parametrico" - cioè che ha un parametro.

Il secondo tipo è rappresentato da due sottocategorie:

1. elementi di input - forniscono la possibilità di cambiare il valore con "meccanismi" grafici progettati per diversi tipi di parametri. Questi elementi sono divisi in diversi gruppi, per esempio lo stato logico vero/falso (bool) imposta il pulsante, la casella di controllo e il pulsante radio, e il valore del parametro con i limiti dell'intervallo e del passo è controllato da un cursore o campo di input. Per ogni tipo di parametro ci sono diversi elementi dello stesso tipo che permettono di cambiare il suo valore in modo simile.

2. elementi di output - traducono il valore in forma numerica, testo o altra forma trasformata graficamente. Questi includono: celle di tabella, etichette di testo, barre di progresso. Anche gli indicatori e i grafici appartengono a questa categoria, e la loro differenza è solo l'adattabilità a un grande volume di dati in uscita.


Come ho detto prima, disegnare elementi è semplice e non complicato. In effetti, si tratta solo di marcare un array con dei valori. Tutte le funzioni sono nella classe CCanvas - linee, rettangoli, cornici. Le funzioni devono solo passare l'array, che viene poi memorizzato nella risorsa e collegato all'oggetto BITMAP_LABEL usando la proprietà OBJPROP_BMPFILE.

L'involucro di questa classe mi disturba come la quinta gamba di un cane. (Dev'essere per questo che nessuno ha mai creato biblioteche su Tela perché gli è stato detto dall'alto: "Devi cavalcare la mucca solo con una sella! ;)).
Motivazione: