Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Ho quasi finito l'esempio della classe GButton, ma devo scappare. Lo finirò domani e lo presenterò.
Fantastico. Molto interessante. )
Questo è ciò che si ottiene.
Il pulsante può essere visualizzato sullo sfondo o in primo piano, con o senza funzione di aggancio.
Nel file di esempio CanvasButton.mq5 è possibile trascinare il pulsante con il mouse. Per farlo, basta tenere premuto Ctrl per spostare il pulsante blu e Shift per spostare il pulsante rosso.
Poiché la classe GButton è una discendente della classe CCanvas, l'esempio dimostra la possibilità di usare funzioni della classe CCanvas sull'esempio CircleWu (questo è implementato in OnInit). Quindi, è possibile scrivere del testo sul pulsante usando le funzioni della classe CCanvas.
Questa classe, ovviamente, non pretende di essere pulita. La grafica non brilla di perfezione e il 3D è molto convenzionale; le ombre non sono implementate, la velocità di esecuzione non è ottimizzata. E molto probabilmente ci sono molti bordi grezzi e la mancanza di vari controlli. Quindi non giudicate severamente.
Se si spende un po' più di tempo, ovviamente si può fare:
Stavo solo cercando di... si potrebbe dire - impostare la direzione.
Il file Canvas.mqh differisce da quello originale solo perché l'array m_pixels è definito come pubblico.
Ecco cosa abbiamo ottenuto.
Il pulsante può essere visualizzato sullo sfondo o in primo piano e può essere cliccato o non cliccato.
Nel file di esempio CanvasButton.mq5 è possibile trascinare il pulsante con il mouse. Per farlo, basta premere Ctrl per spostare il pulsante blu e Shift per spostare il pulsante rosso.
Poiché la classe GButton è una discendente della classe CCanvas, l'esempio dimostra la possibilità di usare funzioni della classe CCanvas sull'esempio CircleWu (questo è implementato in OnInit). Quindi, è possibile scrivere del testo sul pulsante usando le funzioni della classe CCanvas.
Questa classe, ovviamente, non pretende di essere pulita. La grafica non brilla di perfezione e il 3D è molto convenzionale; le ombre non sono implementate, la velocità di esecuzione non è ottimizzata. E molto probabilmente ci sono molti bordi grezzi e la mancanza di vari controlli. Quindi non giudicate troppo duramente.
Se spendi un po' più di tempo, ovviamente, puoi farlo:
Stavo solo cercando di... si potrebbe dire - impostare la direzione.
Il file Canvas.mqh differisce da quello originale solo perché l'array m_pixels è definito come pubblico.
Nikolay, secondo me, è venuto bene. Abbiamo fatto un buon inizio e possiamo andare oltre. Chiamerei questo tipo di pulsante una chiave. Se avete 4 linee chiare di cornice: - in alto, a sinistra luce e a destra, il fondo - scuro per lo stato premuto e viceversa, sarà ancora meglio (solo bisogno di aggiungere uno sfondo chiaro, altrimenti le linee scure su un grafico a sfondo nero non saranno visibili). E poi si può impostare il testo e l'immagine.
Comunque, bel tentativo. )
. Se dividete le 4 linee chiare della cornice lungo i bordi: - in alto, a sinistra chiaro e a destra, in basso scuro per lo stato premuto e viceversa per lo stato premuto, sarà ancora meglio (dovete solo aggiungere uno sfondo chiaro, altrimenti le linee scure non saranno visibili contro la grafica nera).
Sì, è chiaro che si può disegnare come si vuole. In questo caso, non ho fissato un obiettivo per raggiungere un capolavoro. Ma la prima cosa che vorrei migliorare, è generare tutti gli array dell'immagine del pulsante (due array in questo caso) e poi copiarli solo attraverso ArrayCopy, in modo da non dover creare un'immagine ogni volta. Questo ridurrà notevolmente il lavoro, ma al costo di un consumo aggiuntivo di RAM, ma perché è ormai comune su computer da 16 GB di RAM, e se ci sono anche molti pulsanti, il consumo aggiuntivo di memoria è improbabile che superi 1-2 MB, soprattutto se gli stessi pulsanti useranno gli stessi array. Quindi non credo che sia un problema. La cosa principale è la velocità.
Capisco. Quando ho posto la domanda sul pulsante, volevo sapere se era possibile farlo con una tela:
Premuto:
Premuto:
In questo esempio, ogni lato della cornice è composto da diverse linee. Ci sono un totale di 4 linee di sfumatura su ogni lato della cornice. Ogni linea ha una tonalità diversa che dipende dallo stato del pulsante e dalla forma data della cornice. Se CCanvas ha la capacità di impostare il colore su specifiche linee di gradiente della cornice, allora fare l'esempio sopra è facile. Questo è esattamente quello che volevo scoprire.
Capisco. Quando ho posto la domanda sul pulsante, volevo sapere se era possibile farlo con una tela:
Premuto:
Premuto:
In questo esempio, ogni lato della cornice è composto da diverse linee. Ci sono un totale di 4 linee di sfumatura su ogni lato della cornice. Ogni linea ha una tonalità diversa, che dipende dallo stato del pulsante e dalla forma data della cornice. Se CCanvas ha la capacità di impostare il colore su specifiche linee di gradiente della cornice, allora fare l'esempio sopra è facile. Questo è esattamente quello che volevo scoprire.
Non ti capisco, Peter. Tu parli di carne e io di scheletro. Se avevi delle ossa, potevi costruire della carne. Il mio esempio non ha gli stati Pressed, Pressed? Avete almeno guardato dentro la classe GButton? Peter, il mio consiglio: lascia tutto e studia urgentemente OOP. È solo che nel vostro progetto avete colpito un tetto, che si chiama codice gonfiato, è facilmente superabile con l'aiuto di OOP.
))) Allora perché ho iniziato questo topic? ) Ora studierò OOP.
Il tuo esempio ha pulsanti, eventi di clic e stati di questi pulsanti. Tutto è a posto. Ma Nikolai, non ho ancora capito cosa stavo chiedendo - c'è un'opzione nella classe CCcanvas per impostare un colore specifico alle linee di sfumatura della cornice? Guardando il tuo esempio, potresti pensare che c'è... Se sì, puoi disegnare qualcosa di simile al mio esempio? Io sono interessato alla facilità e alle possibilità di disegnare in quanto tale usando le funzionalità di questa classe, e tu stai parlando di velocità e miglioramenti alla funzionalità della classe. Questo è un argomento leggermente diverso.
))) Allora perché ho iniziato questo topic? ) Ora vado a studiare OOP.
È meglio iniziare a imparare l'OOP con qualcosa di più semplice di Canvas.
Avete almeno guardato dentro la classe GButton?