La tela è forte! - pagina 2

 
fxsaber:

CCanvas è un wrapper per ResourceCreate. Così, per esempio, se avete 20 immagini pronte in forma di array. Se volete cambiarli attraverso il canvas, dovrete fare ArrayCopy+Update costosi.

E se lo fate senza CCanvas, avrete bisogno solo di ResourceCreate+ChartRerdraw. Ho pubblicato diversi lavori di disegno dinamico in kodobase. Lì era ovvio che CCanvas non era buono.

Sono d'accordo che è un involucro di risorse. Abbiamo bisogno di stabilire delle definizioni. Canvas, come ho capito, non è una classe CCanvas, ma una risorsa grafica rettangolare, cioè un array di punti. Ciò di cui ho bisogno dalla classe CCanvas sono alcune funzioni per creare, aggiornare e cancellare. È implementato abbastanza intelligentemente, vedo le altre funzioni come inutili a causa dell'implementazione in pixel (non smussata). Inoltre, mi interessa il kanvas come grafica vettoriale, non come bitmap, cioè in altre parole, quando io stesso formo l'immagine, piuttosto che scaricare immagini. Quindi non vedo alcun uso pratico per 20 immagini pronte e preferirei non sviluppare un lettore video con MT5. Lo scopo della grafica vettoriale è quello di rendere un'immagine in meno di 30 (o, meglio, meno di 10) millisecondi. Poiché l'occhio umano non vedrà comunque l'immagine cambiare più di 30 volte al secondo. Fondamentalmente kanvas in MT5 affronta bene questo compito. È vero, quei vortici di colore sono al limite (cioè un frame si forma circa 30 millisecondi sul mio portatile medio), ma su MT4 sta già rallentando.

Ora sto facendo una classe CCanvasPro, se il tempo lo permette, in cui voglio migliorare un po' le cose.
Ecco cosa ho ottenuto finora con i cerchi (levigati con le ombre). Mi dispiace, non ho ancora aperto il codice. A causa della quantità insufficiente di tempo.

Anche questo è uno script.

File:
 
Evgeniy Zhdan:
Fantastico grafico dell'arcobaleno! Mi piacerebbe anche far ballare le candele con la musica e farle girare tra di loro!

Aumenterà i profitti?). Un bonus per ogni ballo, allora ci sto.)))

 
Nikolai Semko:

Naturalmente aiuterà, ma ci sarà una frenata terribile.

Ci sarà un leggero rallentamento, ma nessuna orribile frenata. Almeno visivamente, non è cambiato nulla.


 
Rashid Umarov:

Ci sarà un leggero rallentamento, ma nessuna orribile frenata. Almeno visivamente, non è cambiato nulla.


Certo, sono stato un po' duro. Ma comunque, sarà circa il 10% più lento delle prestazioni complessive.

 
Rashid Umarov:

Ci sarà un leggero rallentamento, ma nessuna orribile frenata. Almeno visivamente, non è cambiato nulla.


Controllato non sul profiling, ma conGetMicrosecondCount

È risultato un rallentamento del 3-4% a 1000 fotogrammi. In linea di principio, sì, non molto critico.

while(!IsStopped())
     {
      static ulong t0=GetMicrosecondCount();
      int pos=int(i%size);
      if(pos==0)
        {
         C.Update();
         //Sleep(30);
         X1= Width-(sin((double)j/100)*(double)Width);
         Y1= Height-(cos((double)j/140)*(double)Height);
         X2= Width+(cos((double)j/80)*(double)Width);
         Y2= Height+(sin((double)j/20)*(double)Height);
         if (j==101000) Print(GetMicrosecondCount()-t0);
         j++;
        }
      int X=pos%Width;
      int Y=int(pos/Width);
      double d= ((X1-X)*(X1-X)+(Y1-Y)*(Y1-Y))/(((X1-X)*(X1-X)+(Y1-Y)*(Y1-Y))+((X2-X)*(X2-X)+(Y2-Y)*(Y2-Y)));
      //C.m_pixels[pos]=XRGB(h[int(d*11520)],h[int(d*17920)],h[int(d*6400)]);
      C.PixelSet(X,Y,XRGB(h[int(d*11520)],h[int(d*17920)],h[int(d*6400)]));
      i++;
     }


 
Nikolai Semko:

Mi sono dato un compito: dimostrare le capacità della grafica personalizzata tramite la classe CCanvas in un breve codice.

Ecco cosa ne è venuto fuori.

Questo script funziona sia in MQL5 che in MQL4. Ma è molto più veloce su MT5.

Ogni fotogramma è unico e non si ripete, cioè lo script non è ciclico.


Dovresti spostare l'array m_pixels[] da protected: a public in Canvas.mqh prima di compilare:

mezz'ora a guardare, aspettando che questa cosa decolli ))

 
Alexey Volchanskiy:

mezz'ora a guardare, aspettando che questa cosa decolli ))

:))
 

Francamente, non capisco quale sia il punto.

Beh, sì, bello, colorato, iridescente... Ma come influenzerà il lavoro dell'esperto?

Capirei, se fossimo qui per scrivere il gioco - è lì che una tale opportunità oh, come richiesto sarebbe... Ma qui...

A mio parere, è necessario proprio il contrario - per sbarazzarsi di tutte le azioni inutili, in modo che il codice risultante carichi il sistema il meno possibile (richiederebbe denaro nel cloud). E deve anche essere più facile da mantenere.

A meno che - "effetto wow" per i clienti... Penso che sia vero, un output ben progettato ti permette di fare più soldi in Freelance...

 
Molto bene, grazie, ora il commercio sarà molto più luminoso, letteralmente.
 
George Merts:

Francamente, non capisco quale sia il punto.

Beh, sì, bello, colorato, iridescente... Ma come influenzerà il lavoro dell'esperto?

Capirei, se fossimo qui per scrivere il gioco - è lì che una tale opportunità oh, come richiesto sarebbe... Ma qui...

A mio parere, è necessario proprio il contrario - per sbarazzarsi di tutte le azioni inutili, in modo che il codice risultante carichi il sistema il meno possibile (richiederebbe denaro nel cloud). E deve anche essere più facile da mantenere.

A meno che - "effetto wow" per i clienti... Penso che sia vero, un output ben progettato ti permette di fare più soldi in Freelance...

Può essere utile per gli indicatori. C'erano diversi indicatori a freccia disegnati qui sulla Tela, c'era anche un articolo.