El lienzo es genial. - página 85

 
Nikolai Semko #:
Desafortunadamente, en MQL4 no hay posibilidad de adjuntar un recurso como un array. Pero todo lo demás funciona.
Por supuesto, es posible implementarlo a través de panderetas duras. Por ejemplo, insertar una imagen PNG en un archivo BMP, es decir, añadir una cabecera BMP al principio del png, y pasar el propio png como una imagen bmp (es decir, si abres dicho BMP, habrá un ruido de píxeles coloreados de diferente transparencia). Y luego adjuntar este "archivo bmp" como un recurso en MQL4. Esto puede ser necesario para el mercado, por lo que ex4 ya contiene una imagen de un formato png más denso.
Como referencia: png es unas 10 veces más pequeño que la misma imagen BMP sin pérdida de calidad, además de soportar total transparencia.
Verdadero recurso bmp en el archivo ex4 se almacena en un formato compactado, pero no por un orden de magnitud menor. Es necesario comprobarlo con exactitud.

Por cierto, nunca he podido insertar BMP con canal alfa en MQL4 cuando la imagen tiene transparencia como png. O no se ve o no compila.

Hubo una discusión aquí https://www.mql5.com/en/forum/157832 Como resultado, sólo es adecuado para MT5. Pero es interesante que BMP existe con canal alfa.

Tampoco funcionaba con PNG... o no se sabía como.


Sobre el canvas y el escalado, Gracias, lo probaré en mq4.

 
Vitaliy Kuznetsov #:

Por cierto, nunca he podido insertar BMP con canal alfa en MQL4, cuando la imagen tiene transparencia como png. O no se muestra o no se compila.

Hubo una discusión aquí https://www.mql5.com/en/forum/157832 Como resultado, sólo es adecuado para MT5. Pero es interesante que existan BMPs con canal alfa.

Tampoco funcionaba con PNG... o no sabía cómo.


Sobre el lienzo y el escalado, Gracias, lo probaré en mq4.

No hay ningún bug de parpadeo en MQL4.
Adjunto la versión mql4.

Archivos adjuntos:
 
Nikolai Semko #:

No hay ningún error de parpadeo en MQL4.
Se adjunta la versión mql4.

Es un ajuste. Gracias.

 

Al principio estaba contento, pero ahora estoy perplejo. No puedo cargar un archivo desde el exterior a través de la configuración en el indicador, pero no dentro del archivo compilado.

Nikolai Semko, si tienes tiempo, por favor escriba si es posible. Y si usted tiene un ejemplo con la configuración de la transparencia y la selección de archivos, me puede ayudar.

 
Vitaliy Kuznetsov #:

Al principio estaba contento, pero ahora estoy perplejo. No puedo cargar un archivo desde el exterior a través de ajustes en el indicador, pero no dentro del archivo compilado.

Nikolai Semko, si tienes tiempo, por favor escriba si es posible. Y si tienes un ejemplo con la configuración de la transparencia y la selección de archivos, me ayudarás.

No entiendo, cual es la dificultad para cargar png como uchar array y luego alimentarlo al objeto de clase Png.
No es nada difícil añadir el método LoadPngFromFile(string file_name) a la clase Png. Simplemente no me propuse tal tarea, así que no lo implementé. Pero puedes hacerlo fácilmente.
h ttps://www.mql5.com/ru/docs/files/filereadarray
Mira el constructor de la clase Png, que toma como entrada un array uchar[] , que contiene todo el fichero png.

*

Uy, soy tonto. El segundo constructor que toma un nombre de fichero ya está implementado. Entonces no veo ninguna dificultad en absoluto.

CPng::CPng(string file_path, bool create_canvas = false, int x = 0, int y = 0);
Документация по MQL5: Файловые операции / FileReadArray
Документация по MQL5: Файловые операции / FileReadArray
  • www.mql5.com
FileReadArray - Файловые операции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vitaliy Kuznetsov #:

Al principio estaba contento, pero ahora estoy perplejo. No puedo cargar un archivo desde el exterior a través de ajustes en el indicador, pero no dentro del archivo compilado.

Nikolai Semko, si tienes tiempo, por favor escriba si es posible. Y si usted tiene un ejemplo con la configuración de la transparencia y la selección de archivos, me puede ayudar.

aquí hay una nueva versión de CPng, que tiene la función LoadPngFromFile().

Archivos adjuntos:
Png.mqh  38 kb
 
Nikolai Semko #:
No entiendo la dificultad de subir un png

Efectivamente..., no siempre es fácil)

Nikolai Semko #:
aquí hay una nueva versión de CPng, que tiene la función LoadPngFromFile().

Gracias, lo probaré

 
Nikolai Semko #:
No entendí, cual es la dificultad para cargar png como uchar array y luego nutrirlo a objeto de la clase Png.

He entendido lo de los PNG externos, carga, escalado, transparencia funciona. Pero...

¿Es siquiera realista para compilar un PNG dentro de un archivo?

La funcionalidad estándar ...

#resource "\\Files\\123.png"

string nam_img = "::Files\\123.png"

... da un error de compilación

No he entrado en el hecho de que el software funcione con un archivo externo, pero ¿cómo hacer que todo el producto final sea un solo archivo?

De lo contrario se pierde el sentido práctico de dicha funcionalidad. No lo he probado en MT5. En MT4 hay un error de conexión.


P.D. Supongo que teóricamente es posible escribir un script que convierta PNG en código y lo pongamos, digamos, en MQH y trabajemos con ellos como parte de un contenedor. Pero no puedo escribir tal script. Las matrices de imágenes son un bosque ciego para mí.

 
Vitaliy Kuznetsov #:

PNGs externos resueltos, la carga, la escala, la transparencia funciona. Pero...

¿Es realista compilar un PNG dentro de un archivo?

Puedes insertar el archivo como un array y luego acceder a este array.


Adjunto un ejemplo

Archivos adjuntos:
Resurs.mq5  634 kb
 
Vitaliy Kuznetsov #:

¿Es siquiera realista compilar PNG dentro de un archivo?

Pide a los desarrolladores que inserten PNG aquí.

Seguro que estarán de acuerdo.

Razón de la queja: