
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
- C'est difficile avec le zoomo. Comme il n'y a pas de barres de défilement. Et pour être honnête, je ne voudrais pas qu'ils soient mis en œuvre dans cette classe. Pour l'instant, il n'utilise que CCanvas, et ne demande pas d'autres objets. Et c'est très bien.
Je prévois d'implémenter le zoom indépendamment par héritage, de mettre des barres de défilement et de redimensionner selon les besoins.
Les barres de défilement sont diaboliques. Vous pouvez faire tourner un graphique normal sans aucune barre - avec la souris et le clavier.
il n'y a pas d'événements graphiques pour le défilement, MQL ne les envoie pas.
Mais vous pouvez simplement glisser-déposer avec la souris au lieu de faire tourner la roue.
mais vous pouvez simplement glisser-déposer avec la souris au lieu de faire tourner la roue.
@Roman Konopelko
Et le numéro 36?
Et j'ai trouvé une autre division par zéro
Je peux préciser (pour reproduire)
une courbe CurveAdd(arrY, CURVE_HISTOGRAM, "P/L") a été ajoutée ; elle possède un tableau arrY de taille 1 ou 0 éléments.
et à en juger par ce constructeur de courbe m_xmax=m_xmin=0.
@Roman Konopelko
Et le numéro 36?
Et j'ai trouvé une autre division par zéro
Implémentation du #36 et correction de l'erreur de division par zéro.
La seule chose est que ValuesFunctionFormat n'a pas changé en :
void ValuesFunctionFormat(DoubleToStringFunction func, void* cbdata) { m_values_func=func; m_cbdata=cbdata; }
Et implémenté des méthodes pour obtenir/réinitialiser un pointeur vers une fonction et un pointeur vers un objet pour celle-ci séparément :
void ValuesFunctionFormat(DoubleToStringFunction func) { m_values_func=func; }
void *ValuesFunctionFormatCBData(void) const { return(m_values_cbdata); }
void ValuesFunctionFormatCBData(void *cbdata) { m_values_cbdata=cbdata; }
Veuillez corriger la gestion des couleurs dans les kanvas.
Maintenant, il ne prend pas en compte le canal alpha. La couleur au lieu de uint est partout.
De ce fait, lorsque l'on dessine sur la toile, il y a des trous de graphique partout (grilles et cadres transparents, car en couleur le canal alpha =0, c'est-à-dire complètement transparent).
Seulement dans certaines fonctions vous l'avez corrigé en appelant constamment ColorToARGB
par exemple
{
...
//--- create background
m_canvas.FillRectangle(0,0,m_width,m_up-1,ColorToARGB(m_background.clr,255));
m_canvas.FillRectangle(0,m_height-m_down+1,m_width,m_height,ColorToARGB(m_background.clr,255));
m_canvas.FillRectangle(0,m_up,m_left-1,m_height-m_down,ColorToARGB(m_background.clr,255));
m_canvas.FillRectangle(m_width-m_right+1,m_up,m_width,m_height-m_down,ColorToARGB(m_background.clr,255));
Mais pourquoi ? Si vous voulez faire de la couleur un type uint et la définir avec un canal alpha...
Comme ici (et dans d'autres fonctions de couleur)
{
...
//--- sets the default values for grid
m_grid.clr_line=ColorToARGB(clrWhiteSmoke);
m_grid.clr_axis_line=ColorToARGB(clrSilver);
m_grid.clr_frame=ColorToARGB(clrBlack);
m_grid.clr_background=ColorToARGB(clrWhite);
----
PS.
Le fait que le canevas lui-même possède COLOR_FORMAT_XRGB_NOALPHA n'est pas important dans ce cas.
a décidé de vérifier les corrections dans la mise à jour 1502 du terminal
où sont apportées toutes les améliorations ?
Pas de ValuesFunctionFormat, pas de correction de bogues zerodevide
LOL
bonnes vacances )
installé 1510.
ValuesFunctionFormat est là, c'est OK.
--
@Roman Konopelko voir la phrase #47 s'il vous plaît.
Dans le code CGraphic, il s'agit juste de quelques variables et fonctions. La substitution n'est pas difficile.
Mais cela supprime le problème de la transparence dans le rendu. Parce qu'en couleur, le canal alpha = 100 % de transparence, ce qui est faux.
@Roman Konopelko voir la phrase #47 s'il vous plaît.
Il n'y a que quelques variables et fonctions dans le code CGraphic. La substitution n'est pas difficile.
Mais cela supprime le problème de la transparence lors du rendu. En fait, en couleur, canal alpha = 100% de transparence, ce qui est faux.
J'ai également ajouté de nouvelles méthodes dans la classe CCanvas, qui permettent de dessiner des primitives avec une épaisseur donnée :
void LineThickHorizontal(const int x1,const int x2,const int y,const int size,const uint clr,const uint style,ENUM_LINE_END end_style);
void LineThick(const int x1,const int y1,const int x2,const int y2,const int size,const uint clr,const uint style,ENUM_LINE_END end_style);
void PolylineThick(const int &x[],const int &y[],const int size,const uint clr,const uint style,ENUM_LINE_END end_style);
void PolygonThick(const int &x[],const int &y[],const int size,const uint clr,const uint style,ENUM_LINE_END end_style);
int LinesWidth(void) const { return(m_lines_width); }
void LinesEndStyle(ENUM_LINE_END end_style) { m_lines_end_style=end_style; }
void LinesWidth(const int width) { m_lines_width=width; }
Exemple :
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
double x[] = { -100, -40, -10, 20, 30, 40, 50, 60, 70, 80, 120 };
double y[] = { -5, 4, -10, 23, 17, 18, -9, 13, 17, 4, 9 };
CGraphic graphic;
graphic.Create(0,"G",0,30,30,780,380);
//--- plot curve
CCurve *curve=graphic.CurveAdd(x,y,CURVE_LINES);
curve.LinesSmooth(true);
curve.LinesStyle(STYLE_DOT);
curve.LinesEndStyle(LINE_END_ROUND);
curve.LinesWidth(10);
graphic.CurvePlotAll();
graphic.Update();
}
L'implémentation de ces méthodes est basée sur l'algorithme Fast Prefiltered Lines, dans lequel le degré de lissage des lignes est basé sur le filtre sélectionné. Si nécessaire, je la décrirai plus en détail.