La tela è forte! - pagina 14

 
Nikolai Semko:

Quindi non ha sentito il mio messaggio.

Ma bisogna arrotondare i numeri doppi per dare le coordinate. Non c'è altro modo.

 
Реter Konow:

Ma bisogna arrotondare i numeri doppi per dare le coordinate. Non c'è altro modo.

Non devi arrotondare nulla.

Ecco uno script, come esempio.

Eseguilo prima con i parametri di default (con cerchi smussati e coordinate e dimensioni di tipo doppio)

e poi eseguirlo con parametro typ = not_smoothed_circles (con cerchi antialias e coordinate e dimensioni di tipo int - dalla classe CCanvas).

e vedrete cosa intendo.

È meglio farlo su sfondo bianco, non su quello nero

File:
 
Nikolai Semko:

Basato su Doom...

Mi chiedo perché l'immagine si blocca mentre si scorre il grafico con il mouse?


È un peccato che non si possa uccidere una risorsa. Per esempio, si spegne l'indicatore di fiamma. E l'oggetto con la risorsa viene lasciato in sospeso. L'oggetto può essere ucciso, ma la risorsa - no. Alla fine, è facile mangiare tutta la memoria del terminale e quindi disattivare impercettibilmente gli Expert Advisors.

 

Ci sono un sacco di librerie 3D scritte in JavaScript da un centinaio di anni. Il modo più semplice e diretto è riscriverli da lì a qui.

Non per 100 anni, naturalmente, ma per alcuni.

 
fxsaber:

Mi chiedo perché l'immagine si blocca mentre si scorre il grafico con il mouse?

deve essere a causa del controllo dell'evento CHARTEVENT_CHART_CHANGE nella mia classe iCanvas

non c'è questo controllo nello script e non c'è nessun congelamento.

File:
fire.mq5  9 kb
 
Nikolai Semko:

Non devi arrotondare nulla.

Ecco uno script come esempio.

Eseguilo prima con i parametri di default (con cerchi antialias e coordinate e dimensioni di tipo doppio)

e poi eseguirlo con parametro typ = not_smoothed_circles (con cerchi antialias e coordinate e dimensioni di tipo int - dalla classe CCanvas).

e vedrete cosa intendo.

È meglio farlo su sfondo bianco, non nero.

Sì, sembra molto buono. Forme di qualità dei cerchi.

Ma voi state usando la classe CCanvas, e lì le coordinate sono impostate in int.

 
fxsaber:

Mi chiedo perché l'immagine si blocca mentre si scorre il grafico con il mouse.


È un peccato che non si possa uccidere una risorsa. Per esempio, si spegne l'indicatore di fiamma. E l'oggetto con la risorsa viene lasciato in sospeso. L'oggetto può essere ucciso, ma la risorsa - no. Semplicemente mangia tutta la memoria del terminale e quindi disattiva in modo poco appariscente gli Expert Advisors.

E ResourseFree()?

 
fxsaber:

È un peccato che non si possa uccidere una risorsa. Per esempio, si spegne l'indicatore di fiamma. Lascia un oggetto con una risorsa appesa. Si può uccidere l'oggetto, ma non la risorsa. Alla fine, si può facilmente mangiare tutta la memoria del terminale e, quindi, disattivare impercettibilmente gli Expert Advisors.

Ma perché?

Uso un distruttore nella mia classe

~iCanvas() { Destroy(); ChartRedraw();};

e distruggere:

void CCanvas::Destroy(void)
  {
//--- delete object
   if(m_objname!=NULL)
     {
      ObjectDelete(m_chart_id,m_objname);
      m_chart_id=0;
      m_objname =NULL;
      m_objtype =WRONG_VALUE;
     }
//--- deallocate array
   ArrayFree(m_pixels);
//--- free resource
   if(m_rcname!=NULL)
     {
      ResourceFree(m_rcname);
      m_rcname=NULL;
     }
//--- zeroize data
   m_width =0;
   m_height=0;
  }
 
Nikolai Semko:

questo è probabilmente dovuto al controllo dell'evento CHARTEVENT_CHART_CHANGE nella mia classe iCanvas

Nello script, non c'è questo controllo e non c'è il congelamento.

Sì, nessun problema nello script.


Molto curioso di sapere come sarebbe stato.

Forum sul trading, sistemi di trading automatico e test di strategia

Nuova versione di MetaTrader 5 build 1930: Finestre grafiche fluttuanti e librerie .Net in MQL5

fxsaber, 2019.01.14 21:37

Rimane da fare un'immagine estraibile del pensiero con il rubinetto del gas spento.

Ma ciò che è veramente spettacolare è dare fuoco alle barre e alle linee di oggetti stessi.


Si potrebbero anche fare le barre come se fossero delle fessure nella fornace. È come se si guardassero le fiamme attraverso di loro.


Questo richiede un po' di lavoro: creare un secondo buffer Canvas come copia della fiamma principale, e poi applicare un filtro sulla posizione dei pixel delle barre. Non dovrebbe essere difficile, a prima vista.

 
Nikolai Semko:

Perché?

Uso un distruttore nella mia classe

e distruggere:

Allora per qualche motivo non ha funzionato, visto che mi è rimasto tutto.