Attenzione, concorso! - pagina 13

 

Oops )

Sono d'accordo con l'opzione derebane e una discussione pubblica sarebbe molto utile.

 
TheXpert:
Sì, questo è un problema. Questo argomento richiede komposter e tol64

Grazie. Non ho partecipato al concorso perché attualmente sto lavorando a un progetto molto grande. Sarà presto disponibile per tutti. Ci sarà molto da discutere e potrebbe essere possibile organizzare anche vari concorsi basati su di esso. Non posso ancora dare altri dettagli. )

 
Bene, eccoci qua :)
Класс для работы с кнопками произвольной формы
Класс для работы с кнопками произвольной формы
  • 2015.03.18
  • Dmitriy Parfenovich
  • www.mql5.com
Класс предназначен для создания интерактивных кнопок на графике цены с различными состояниями.
 
fyords:
Ecco qua :)

Il mio è ancora in fase di test... Vi farò sapere quando lo vedrò...

Aggiunto:

Ecco la mia opzione:)

 
fyords:

L'ho cercato - 5 punti :) Se l'utente non ha bisogno della libreria standard, la vostra versione è migliore.

In realtà mi sto preoccupando di questa libreria perché ho un programma con cui sto lavorando ora, scritto sulla sua base. Il design è molto goffo, volevo migliorarlo. E qui ho appena ricevuto un concorso, che è molto rilevante per me.

Dai pro della vostra implementazione:

1)Non ci sono stampelle. Ce l'ho e l'ereditarietà delle classi standard e altri piaceri per sostenere la compatibilità con la libreria standard.

2) Lostato del pulsante e lo stato dell'oggetto sul grafico coincidono.

3)Le funzioni hanno ilcontrollo del valore di ingresso per gli errori. Io, in alcuni punti, ho trascurato questo...

4)I pulsanti sono creati in modo più elegante in Expert Advisor (attraverso il ciclo annidato). Non ci ho pensato.

5)È possibile impostare non solo l'angolo del grafico, ma anche l'angolo del pulsante. Onestamente - non so dove può essere utile :) ma forse...

6) Ho6 foto. Ne ho 4.

7)CCanvas - puoi scrivere qualcosa sul pulsante, aggiungere un paio di funzioni e questo è tutto. È molto conveniente nel caso di applicazioni multilingue. Dovrei rifare le stampelle.

8) Ilvostro codice è molto più veloce da capire.

Ho notato alcuni miglioramenti:

1)Se si riduce la chat in modo che il pulsante sia parzialmente nascosto (in basso o in alto) - la retroilluminazione del pulsante non viene ripristinata (vedi immagine) .

2)Non ho visto un'opzione per creare un "pulsante antiaderente". Cioè pulsante che è affondato e subito caduto (simile ai pulsanti standard).

3)Avete un modo molto più complicato di definire la trasparenza. Non capisco nemmeno come funziona dappertutto. Se preparate voi stessi le immagini, è più facile fare come ho fatto io. Cioèprendo solo la trasparenza dall'immagine con la funzione (grazie a Integer ):

double GetAlfa(uint  aColor)
  {
   return((aColor>>24)&0xff);
  }

E poi lo controllo con il livello di soglia (ho preso 250, ma naturalmente ho bisogno di aggiungere la funzione, in modo da poterla impostare):

 double alfa=GetAlfa(data[y*m_SizeX+x]);
 if(alfa>250)
   {
    m_T[y*m_SizeX+x]=true;
   }
 else
   {
   m_T[y*m_SizeX+x]=false;
   }

Anche se, se lavorate con immagini già pronte senza aprire l'editor grafico, allora la vostra versione sarà probabilmente più conveniente.

ZS: Ho appena notato che la classe CCanvas ha anche una funzione di definizione della trasparenza:

#define  GETRGBA(clr)   uchar((clr)>>24)
 

Grazie. Darò un'occhiata al tuo.

MigVRN:

Quello che ho notato che potrebbe essere migliorato: ...

  1. Se il puntatore esce dalla finestra, l'evento "move mouse" non viene generato, e quindi sembra impossibile risolvere questo bug.
  2. Il compito non li aveva, anche se non ci vorrà molto sforzo per sistemarlo.
  3. Con la trasparenza mi sembra che tutto sia più semplice: prendi 2e punti (il più scuro e il più chiaro), il valore medio sarà una soglia. Se ci sono aree trasparenti nell'immagine, allora il colore più scuro si sposterà verso 0. Di conseguenza, anche il valore di soglia lo farà.
    Questa decisione è stata presa per il fatto che la stessa funzione funziona sia con la trasparenza che con una maschera separata.
    Vorrei anche menzionare che questo metodo (maschera separata) permette di utilizzare immagini senza trasparenza. Beh, forse lo sviluppatore non è bravo con gli editor grafici :)
    Oppure, variante con specificazione del colore della maschera - come variante per specificare il colore bianco per il pulsante verde e "diventerà trasparente", senza ulteriori balli intorno alla trasparenza e maschere aggiuntive.
 
MigVRN:

Ho fatto un lavoro per te... Sto aspettando la risposta.

Grazie ai partecipanti.

 
TheXpert #:
Sì. L'area del pulsante nell'immagine è un'area opaca.