Discussion de l'article "Étudier la classe CCanvas. Comment dessiner des objets transparents"
Vladimir, je ne suis pas douée pour les toiles. Voici une question. Il y a une toile. Il y a une étiquette de texte dessus. Pourquoi le terminal voit-il l'événement de clic sur l'étiquette comme un événement de clic sur le canevas ? Ce conflit peut-il être résolu d'une manière ou d'une autre ?
...
Il existe une propriété permettant de définir la priorité de cet événement :
OBJPROP_ZORDER - Priorité de l'objet graphique devant recevoir l'événement de clic de souris sur le graphique (CHARTEVENT_CLICK). Par défaut, la valeur est fixée à zéro lors de la création, mais vous pouvez augmenter la priorité si nécessaire. Lorsque des objets qui se chevauchent reçoivent l'événement CHARTEVENT_CLICK, seul l'objet dont la priorité est supérieure aux autres le recevra.
Je vous enverrai le code plus tard. OBJPROP_ZORDER - pour kanvas ne peut pas être défini...
J'ai trouvé la cause de l'erreur de traitement... Il y a 2 toiles, l'une superposée à l'autre. Et il y a une étiquette de texte au-dessus. C'est ce que OnChartEvent() ne voit pas.
Je vous enverrai le code plus tard. OBJPROP_ZORDER - pour kanvas ne peut pas être défini...
J'ai trouvé la cause de l'erreur de traitement... Il y a 2 toiles, l'une superposée à l'autre. Et il y a une étiquette de texte au-dessus. C'est ce que OnChartEvent() ne voit pas.
Si, il le peut. Il s'agit d'un objet ordinaire comme OBJ_BITMAP_LABEL ou OBJ_BITMAP.
Vous pouvez le faire. Il s'agit d'un objet ordinaire comme OBJ_BITMAP_LABEL ou OBJ_BITMAP.
C'est vrai. Merci.
Pour ce faire, vous devez extraire le nom de l'objet graphique lié et lui donner la priorité.
Voilà comment cela se passe (extrait du bloc d'initialisation) :
//--- créer le 1er canevas if(!myCanvas1.CreateBitmapLabel("My canvas1",_X,_Y,Width,Height,COLOR_FORMAT_ARGB_RAW)) { Print("Error creating base canvas: ",GetLastError()); return INIT_FAILED; } //--- affichage myCanvas1.Erase(XRGB(0x1F,0x1F,0x1F)); myCanvas1.Update(); string obj_name=myCanvas1.ChartObjectName(); if(!ObjectSetInteger(0,obj_name,OBJPROP_ZORDER,0)) return INIT_FAILED;
Bonjour Vladimir,
Merci pour cet article intéressant.
Il y a une petite erreur dans votre tableau 3.
| С'255,0,255' | 0xFF00FF | 1111 1111 0000 0000 1111 1111 | |
| XOR | |||
| C'255,255,255' | 0xFFFF | 1111 1111 1111 1111 1111 1111 | Blanc (arrière-plan) |
| = | |||
| С'0,255,0' | 0x00FF00 | 1111 1111 1111 0000 0000 0000 | |
| Devrait être : | 0000 0000 1111 1111 0000 0000 | Vert | |
Bonjour Vladimir,
Merci pour cet article intéressant.
Il y a une petite erreur dans votre tableau 3.
| С'255,0,255' | 0xFF00FF | 1111 1111 0000 0000 1111 1111 | |
| XOR | |||
| C'255,255,255' | 0xFFFF | 1111 1111 1111 1111 1111 1111 | Blanc (arrière-plan) |
| = | |||
| С'0,255,0' | 0x00FF00 | 1111 1111 1111 0000 0000 0000 | |
| Devrait être : | 0000 0000 1111 1111 0000 0000 | Vert | |
La question est la suivante. Quelle pourrait être la meilleure implémentation pour déplacer le kanvas autour du graphique ? Une sorte de méthode :
bool CUserCanvas::Move(int _new_x,int _new_y);
La question est la suivante. Quelle pourrait être la meilleure implémentation pour déplacer le kanvas autour du graphique ? Une sorte de méthode :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Un nouvel article Étudier la classe CCanvas. Comment dessiner des objets transparents a été publié :
Avez-vous besoin de plus que des graphiques maladroits de moyennes mobiles ? Voulez-vous dessiner quelque chose de plus beau qu'un simple rectangle rempli dans votre terminal ? Des graphiques attrayants peuvent être dessinés dans le terminal. Cela peut être implémenté via la classe CСanvas, qui est utilisée pour créer des graphiques personnalisés. Avec cette classe, vous pouvez implémenter la transparence, mélanger les couleurs et produire l'illusion de la transparence au moyen de superpositions et de mélanges de couleurs.
Nous vivons dans un monde en trois dimensions et percevons tout ce qui nous entoure en trois dimensions. Nous avions l'habitude de voir ou même de ressentir la tridimensionnalité. Dans le monde tridimensionnel, nous pouvons comprendre lequel des objets est le plus proche de nous.
Certains objets peuvent être translucides. Par exemple, prenez un verre transparent contenant un liquide translucide sur fond bleu. Le fond bleu est visible à travers le verre avec du liquide. Les détails de l'arrière-plan dépendent du degré de transparence du liquide.
Fig. 1 Vue commune de la dimensionnalité
Auteur : Vladimir Karputov