Realización de un proyecto crowdsourced en Canvas - página 31

 
Реter Konow:
Parafraseando: Acabarás con un EA con interfaz, aunque una parte la haga yo y la otra tú. Esto no le impedirá juntar las dos partes en un EA.
Aunque se puede ir por otro camino. Yo publicaré el constructor, y usted, con mi ayuda, diseñará la gui que necesita. A continuación, imprimirá el núcleo y lo introducirá en el motor, que conectará al Asesor Experto. Esto es aún mejor, porque inmediatamente aprenderá a escribir gráficos en el lenguaje de marcas y podrá corregirlos usted mismo.
 
De todos modos, eso es lo que haremos. Publicaré el constructor y enseñaré a diseñar el gui sobre él aquí. Todavía no hay documentación, así que si estás interesado, permanece atento al tutorial.

La formación incluirá los siguientes temas:

1. Creación de una guía funcional.
2. estilo.
3. Imprimir y enchufar el archivo del núcleo y del motor en la aplicación (muy simple - como un inline).
4. Conectar los elementos de la guía a la aplicación a través de la funcionalidad de la API (el archivo de la API se crea automáticamente).

Espera a que se publique en este hilo.
 
Реter Konow:
De todos modos, eso es lo que haremos. Publicaré el constructor y enseñaré a diseñar en él aquí gui. Todavía no hay documentación, así que si estás interesado, estate atento al tutorial.

La formación incluirá los siguientes temas:

1. Creación de una guía funcional.
2. Diseño de estilos.
3. Imprime y conecta el núcleo y el archivo del motor a la aplicación (muy simple - como un inline).
4. Conectar los elementos de la guía a la aplicación a través de la funcionalidad de la API (el archivo de la API se crea automáticamente).

Se espera que se publique en esta rama.

¡Copiado!

 
---:

No he grabado el vídeo, pero te envío un ejemplo.

hay 600 listas desplegables.

Mueve el ratón - con cada evento y cambio de color el CCanvas general se redibuja.

Puedes ver el tamaño final en las propiedades del mapa de bits - 1500x600 px (comparado con tus 800x500 y 250ms de retraso). Lo que equivale a 900.000 píxeles, y todos se redibujan al instante. No hay segundos de por medio.

Cada lista se representa primero en su propio lienzo en su propio tamaño (para que no se desborde) y luego se introduce en el conjunto. Así que tenemos 600 llamadas ResourceCreate por evento de ratón.
Esto significa, como se puede ver por la velocidad de reacción, que los fotogramas son suficientes para mostrar los dibujos animados.

Los desarrolladores de MT dieron una herramienta satisfactoria sin retrasos (me refiero a ResourceCreate bitmaps)

¿Es posible ver este ejemplo en código abierto?

 
Алексей Барбашин:

Es triste que el proyecto haya entrado en modo cerrado (

No ha ido a ninguna parte.

 
Алексей Барбашин:

¿Es posible ver este ejemplo en código abierto?

¿Qué es lo que no entiendes de los kanvas?

1. Reacciona a los eventos como todos los demás objetos gráficos. En otras palabras, puede seguir las coordenadas del ratón mientras se mueve, reaccionar a los eventos de clic del ratón y del teclado.

2. puede cambiar independientemente el color de cada píxel.

¿Qué más necesitas? Y entonces se necesita algo de cerebro y la voluntad de perder mucho tiempo inútilmente.

 
Hola.
 
Dmitry Fedoseev:

¿Qué es lo que no entiendes de trabajar con un kanvas?

1. Reacciona a los eventos como todos los demás objetos gráficos. Es decir, puede seguir las coordenadas del ratón mientras se mueve, reaccionar a los eventos de clic del ratón y del teclado.

2. puede cambiar independientemente el color de cada píxel.

¿Qué más necesitas? Lo siguiente que necesitas es algo de cerebro y ganas de perder mucho tiempo.

Bueno, el kanvas en sí no reacciona a los eventos. Y el hecho de poder cambiar cada píxel es evidente.

Me interesaba la implementación de un rediseño fragmentado del lienzo.

Pero parece que muchos se han decantado por el repintado completo del lienzo aunque sólo haya que redibujar una pequeña parte, es decir, un solo control.

 
Алексей Барбашин:

Bueno, el kanvas en sí no reacciona a los eventos. Y el hecho de poder cambiar cada píxel es evidente.

Me interesaba la implementación del redibujado por partes del lienzo.

Pero parece que muchos se han decantado por el repintado completo del lienzo aunque sólo haya que repintar una pequeña parte, es decir, un control.

El lienzo en sí no reacciona a los acontecimientos, pero no existe por sí mismo.

Redistribución fragmentaria: vale la pena empezar a hacerlo y se aclarará si existe ese objetivo. Creo que debería haber una matriz de controles, cada control tiene límites definidos. Cuando necesitas redibujar un control, tienes que ir a través de todos los controles, ver qué más cae en esta área y sólo redibujarlos. Al menos así.

 
Dmitry Fedoseev:

El kanvas en sí no es reactivo, pero no existe por sí mismo.

La redistribución fragmentada: vale la pena empezar a hacerla y se aclarará si existe ese objetivo. Creo que debería haber una matriz de controles, cada control tiene límites definidos. Cuando necesitas redibujar un control, tienes que ir a través de todos los controles, ver qué más cae en esta área y sólo redibujarlos. Al menos de esta manera.

Así es exactamente como lo construí. Básicamente tomé la biblioteca estándar como base, porque tiene muy bien trabajados los momentos de transferencia de eventos y algunas otras cosas. Anatoly crea agrupaciones para cada clase de elementos, mientras que en el estándar todo se reduce a un objeto básico.

Como resultado, WndObject contiene la descripción completa de las propiedades más comunes de cualquier control (tamaño, ubicación, color de fondo, color del borde, grosor del borde, texto, imagen, etc.). Además la misma clase contiene una referencia al control padre. Es decir, si no se especifica ningún padre para el control, éste crea su propio objeto kanvas en el gráfico, de lo contrario se dibuja en el kanvas del padre. Dependiendo de su posición (autónomo, esclavo) también se calculan las coordenadas de la ubicación del elemento. Además, el mismo objeto tiene un array que contiene la descripción original de la zona madre ocupada por el elemento. La idea en sí es la siguiente: si sólo cambia el elemento en sí, antes de que se redibuje, el área de píxeles se rellena con la matriz de píxeles padre, y sólo entonces se aplica el nuevo estado del control. este enfoque no requiere repintar todo el lienzo cada vez, porque el repintado está pasando por alto todos los elementos de la matriz, y recursivamente con los elementos anidados. Para el renderizado y la actualización de un control en particular, sugerimos dos funciones: una que dibuja sobre el padre (o sobre un lienzo en blanco) al crear todo el control, y otra que actualiza la visualización de sólo el control dado. Así que es así.

Todavía "perdido" en el modelo de eventos: después de que los cambios que las capas deben ser redibujados.

Nikolai en sus ejemplos muestra que en principio no es necesario molestarse en almacenar los datos de las zonas locales porque el repintado de todo el lienzo funciona tan rápido que no es necesario bajar a los detalles, basta con repintar siempre todo de una vez.
Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека MQL5 написана на языке MQL5 и предназначена для облегчения написания программ (индикаторов, скриптов, экспертов) конечным пользователям. Библиотека обеспечивает удобный доступ к большинству внутренних функций MQL5.