El lienzo es genial. - página 72

 

Para qué molestarse, construye OpenGL y OSG(http://www.openscenegraph.org/) en Canvas.

entonces no sólo volarán las estrellas :-)

PS/ como superficie opengl puede utilizar "recursos" o más exactamente datos para ellos - GL puede dibujar no sólo en pantalla, sino simplemente en arrays; es decir, hay una cierta compatibilidad aquí

The OpenSceneGraph Project Website
  • www.openscenegraph.org
Project website for OpenSceneGraph
 
Gracias Nikolai - la versión MT4 ha sido compilada
 
Jagg #:
Gracias Nikolai - La versión MT4 ha sido compilada

Sí.
Pero como sospechaba, a veces se congela el evento del ratón.
Este es un error que MQ probablemente no arreglará. Ocurre cuando el cálculo dentro del OnChartEvent supera un determinado valor (unos 10 milisegundos), tras lo cual el evento OnChartEvent se congela durante unos 300 milisegundos.

Este fallo se evita mediante un temporizador.

Si pones menos de 10000 estrellas (por ejemplo, 5000), es posible que este fallo no aparezca.


PD: Como prometí, he reiniciado el código.

Archivos adjuntos:
Stars.ex4  27 kb
 
Gracias de nuevo Nikolai - con 3000 funciona perfectamente con MT4
 
Andrey Khatimlianskii #:

Así que muéstralo, para que todo el mundo lo entienda de una vez )

Aquí hay un ejemplo claro con estrellas de colores.
A la izquierda de la línea amarilla hay un gráfico antialiasing con mezcla de colores con coordenadas dobles.
A la derecha, sin suavizar con coordenadas int.

En la captura de pantalla MaxSizeRadius = 2

Archivos adjuntos:
3DStars.mq5  12 kb
iCanvas_CB.mqh  53 kb
 

Creo que este hilo es el más competente en Kanvas, así que por favor, guarden mi tiempo para resolver yo mismo el siguiente problema.


Existe un recurso ya generado a cuyos datos se accede mediante ResourceReadImage/ResourceCreate. El recurso es propio - no es de lectura.

Tienes que poner algunas líneas de texto en esta imagen.


A grandes rasgos, tienes Data[]-array de píxeles y Width. Convierte los datos[] en consecuencia.


Resuelto con TextOut - sólo hay que poner listo Data[]-array allí para añadir el texto.

 
fxsaber #:

SZ La solución es a través de TextOut - ya preparado Data[]-array para añadir el texto se escribe directamente allí.

Sí, sólo hay un pequeño matiz no documentado.
Si utiliza el canal alfa (COLOR_FORMAT_ARGB_NORMALIZE), debe rellenarlo no con ceros antes de crear su mapa de bits.

.Erase(0x00FFFFFF);

De lo contrario, los bordes de los caracteres quedarán "dentados".

 
Nikolai Semko #:

Sí, sólo un pequeño matiz no documentado.

Gracias.

 

¿Puede alguien decirme si hay un código listo para Editar cuadro en kanvas.

Estoy haciendo un panel de goma y necesito un elemento de este tipo. Al hacer clic en él, es necesario introducir y eliminar números y ver un cursor parpadeante.

Si no, voy a hacer una sustitución normal al hacer clic en él.

 
Vitaliy Kuznetsov #:

¿Puede alguien por favor aconsejar si hay algún código listo para Editar cuadro a la lona.

Estoy haciendo un panel de goma y necesito un elemento de este tipo. Al hacer clic en él, es necesario introducir y eliminar números y ver un cursor parpadeante.

Si no, voy a hacer una sustitución normal al hacer clic en él.

No lo he encontrado, aunque puede que alguien lo haya implementado.
la tarea no es la más difícil, pero tampoco la más fácil.
En cualquier caso, una implementación así lleva casi 1.500 líneas en JS.(https://goldfirestudios.com/canvasinput-html5-canvas-text-input)
Personalmente no necesitaba tal elemento. Ya que esta forma de cambiar valores (si hablamos de números) tiene una gran desventaja - es imposible hacerlo suavemente, cambiar parámetros "sobre la marcha" para una mejor visualización. Slider maneja esto bien y la implementación de slider es mucho más fácil.