Discussione sull’articolo "Studiare la classe CCanvas. Come disegnare oggetti trasparenti"
Vladimir, non sono bravo con le tele. Ecco una domanda. C'è una tela. Su di essa c'è un'etichetta di testo. Perché il terminale vede l'evento del clic sull'etichetta come un evento del clic sulla tela? È possibile risolvere questo conflitto in qualche modo?
...
Esiste una proprietà per impostare la priorità di questo evento:
OBJPROP_ZORDER - Priorità dell'oggetto grafico che riceve l'evento di clic del mouse sul grafico (CHARTEVENT_CLICK). Per impostazione predefinita, il valore è impostato a zero durante la creazione, ma è possibile aumentare la priorità se necessario. Quando oggetti sovrapposti ricevono l'evento CHARTEVENT_CLICK, solo l'oggetto la cui priorità è più alta degli altri lo riceverà.
Ti invierò il codice più tardi. OBJPROP_ZORDER - per kanvas non può essere impostato...
Ho trovato la causa dell'elaborazione errata... Ci sono 2 tele, una sovrapposta all'altra. E c'è un'etichetta di testo in cima. Questo è ciò che OnChartEvent() non vede.
Ti invierò il codice più tardi. OBJPROP_ZORDER - per kanvas non può essere impostato...
Ho trovato la causa dell'elaborazione errata... Ci sono 2 tele, una sovrapposta all'altra. E c'è un'etichetta di testo in cima. Questo è ciò che OnChartEvent() non vede.
Sì, invece. Si tratta di un oggetto normale come OBJ_BITMAP_LABEL o OBJ_BITMAP.
È possibile. È un oggetto normale come OBJ_BITMAP_LABEL o OBJ_BITMAP.
Giusto. Grazie.
Per farlo, è necessario estrarre il nome dell'oggetto grafico vincolato e dargli priorità.
Ecco come funziona (estratto dal blocco di inizializzazione):
//--- creare la prima tela if(!myCanvas1.CreateBitmapLabel("My canvas1",_X,_Y,Width,Height,COLOR_FORMAT_ARGB_RAW)) { Print("Error creating base canvas: ",GetLastError()); return INIT_FAILED; } //--- visualizzazione myCanvas1.Erase(XRGB(0x1F,0x1F,0x1F)); myCanvas1.Update(); string obj_name=myCanvas1.ChartObjectName(); if(!ObjectSetInteger(0,obj_name,OBJPROP_ZORDER,0)) return INIT_FAILED;
Ciao Vladimir,
Grazie per questo interessante articolo.
Nella tabella 3 c'è un piccolo errore.
| С'255,0,255' | 0xFF00FF | 1111 1111 0000 0000 1111 1111 | |
| XOR | |||
| C'255,255,255' | 0xFFFFFF | 1111 1111 1111 1111 1111 1111 | Bianco (sfondo) |
| = | |||
| С'0,255,0' | 0x00FF00 | 1111 1111 1111 0000 0000 0000 | |
| Dovrebbe essere : | 0000 0000 1111 1111 0000 0000 | Verde | |
Ciao Vladimir,
Grazie per questo interessante articolo.
Nella tabella 3 c'è un piccolo errore.
| С'255,0,255' | 0xFF00FF | 1111 1111 0000 0000 1111 1111 | |
| XOR | |||
| C'255,255,255' | 0xFFFFFF | 1111 1111 1111 1111 1111 1111 | Bianco (sfondo) |
| = | |||
| С'0,255,0' | 0x00FF00 | 1111 1111 1111 0000 0000 0000 | |
| Dovrebbe essere : | 0000 0000 1111 1111 0000 0000 | Verde | |
La domanda è questa. Quale potrebbe essere la migliore implementazione per spostare il kanvas all'interno del grafico? Una sorta di metodo:
bool CUserCanvas::Move(int _new_x,int _new_y);
La domanda è questa. Quale potrebbe essere la migliore implementazione per spostare il kanvas all'interno del grafico? Una sorta di metodo:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Il nuovo articolo Studiare la classe CCanvas. Come disegnare oggetti trasparenti è stato pubblicato:
La solida grafica scomoda delle medie mobili non ti va più bene? Vuoi disegnare qualcosa di più bello di un semplice rettangolo riempito di colore nel tuo terminale? Puoi disegnare una grafica più accattivante nel tuo terminale. Questo può essere implementato tramite la classe CСanvas, che viene utilizzata per creare grafiche personalizzate. Con questa classe è possibile implementare la trasparenza, fondere i colori e produrre l'illusione della trasparenza mediante la sovrapposizione e la fusione dei colori.
Viviamo in un mondo tridimensionale e percepiamo tutto ciò che ci circonda in tre dimensioni. Eravamo soliti vedere o persino sentire la tridimensionalità. Nel mondo tridimensionale possiamo capire quale degli oggetti è più vicino a noi.
Alcuni oggetti potrebbero essere traslucidi. Ad esempio, prendi un bicchiere trasparente contenente un liquido traslucido su uno sfondo blu. Lo sfondo blu è visibile attraverso il vetro con il liquido. I dettagli di fondo dipendono dal grado di trasparenza del liquido.
Fig. 1 Vista comune della dimensionalità
Autore: Vladimir Karputov