Realización de un proyecto crowdsourced en Canvas - página 22
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Casi he terminado el ejemplo de la clase GButton, pero tengo que salir corriendo. Lo terminaré mañana y lo presentaré.
Genial. Muy interesante. )
Esto es lo que obtienes.
El botón puede aparecer en el fondo o en el primer plano, con o sin función de enganche.
En el archivo de ejemplo CanvasButton.mq5 es posible arrastrar el botón con el ratón. Para ello, basta con pulsar Ctrl para mover el botón azul, y Shift para mover el botón rojo.
Debido a que la clase GButton es descendiente de la clase CCanvas, el ejemplo demuestra la capacidad de utilizar funciones de la clase CCanvas en el ejemplo CircleWu (Esto se implementa en OnInit). Así, es posible escribir texto en el botón utilizando funciones de la clase CCanvas.
Esta clase, por supuesto, no pretende ser limpia. Los gráficos no brillan con perfección y el 3D es muy convencional; las sombras no están implementadas, la velocidad de ejecución no está optimizada. Y lo más probable es que haya muchas asperezas y falta de controles diversos. Así que no juzgues con severidad.
Si se dedica un poco más de tiempo, por supuesto que se puede hacer:
Sólo intentaba... se podría decir - marcar la dirección.
El archivo Canvas.mqh difiere del original sólo en que la matriz m_pixels se define como pública.
Esto es lo que tenemos.
El botón puede aparecer en el fondo o en el primer plano y puede ser pulsado o no.
En el archivo de ejemplo CanvasButton.mq5 es posible arrastrar el botón con el ratón. Para ello, basta con pulsar Ctrl para mover el botón azul, y Shift para mover el botón rojo.
Debido a que la clase GButton es descendiente de la clase CCanvas, el ejemplo demuestra la capacidad de utilizar funciones de la clase CCanvas en el ejemplo CircleWu (Esto se implementa en OnInit). Así, es posible escribir texto en el botón utilizando funciones de la clase CCanvas.
Esta clase, por supuesto, no pretende ser limpia. Los gráficos no brillan con perfección y el 3D es muy convencional; las sombras no están implementadas, la velocidad de ejecución no está optimizada. Y lo más probable es que haya muchas asperezas y falta de controles diversos. Así que no juzgue con demasiada dureza.
Si dedicas un poco más de tiempo, por supuesto, puedes hacerlo:
Sólo intentaba... se podría decir - marcar la dirección.
El archivo Canvas.mqh difiere del original sólo en que la matriz m_pixels se define como pública.
Nikolay, en mi opinión, salió bastante bien. Hemos empezado bien y podemos ir más allá. Yo llamaría a este tipo de botón una llave. Si usted tiene 4 líneas de marco claro: - arriba, luz izquierda y derecha, la parte inferior - oscuro para el estado presionado y viceversa, será aún mejor (sólo tiene que añadir un fondo claro, de lo contrario las líneas oscuras en un gráfico de fondo negro no será visible). Y luego puedes establecer el texto y la imagen.
De todos modos, buen intento. )
. Si divides las 4 líneas claras del marco a lo largo de los bordes: - arriba, izquierda clara y derecha, abajo oscura para el estado pulsado y viceversa para el estado presionado, será aún mejor (sólo tienes que añadir un fondo claro, de lo contrario las líneas oscuras no serán visibles contra los gráficos negros).
Sí, está claro que puedes dibujar como quieras. En este caso, no me puse como objetivo conseguir una obra maestra. Pero lo primero que me gustaría mejorar, es generar todos los arrays de la imagen del botón (dos arrays en este caso) y luego copiarlos sólo a través de ArrayCopy, para no tener que crear una imagen cada vez. Esto reducirá en gran medida el trabajo, pero a costa de un consumo adicional de memoria RAM, pero debido a que ahora es común en los equipos de 16 GB de RAM, y si hay incluso una gran cantidad de botones, el consumo de memoria adicional es poco probable que exceda de 1-2 MB, especialmente si los mismos botones utilizarán las mismas matrices. Así que no creo que sea un problema. Lo principal es la velocidad.
Ya veo, cuando planteé la pregunta sobre el botón, quería saber si era posible hacerlo con un lienzo:
Presionado:
Presionado:
En este ejemplo, cada lado del marco está formado por varias líneas. Hay un total de 4 líneas de gradiente en cada lado del marco. Cada línea tiene un tono diferente que depende del estado del botón y de la forma dada del marco. Si CCanvas tiene la capacidad de establecer el color a líneas de gradiente específicas del marco, entonces hacer el ejemplo anterior es fácil. Eso es exactamente lo que quería averiguar.
Ya veo. Cuando planteé la pregunta sobre el botón, quería saber si era posible hacerlo con un lienzo:
Presionado:
Presionado:
En este ejemplo, cada lado del marco está formado por varias líneas. Hay un total de 4 líneas de gradiente en cada lado del marco. Cada línea tiene un tono diferente, que depende del estado del botón y de la forma dada del marco. Si CCanvas tiene la capacidad de establecer el color a líneas de gradiente específicas del marco, entonces hacer el ejemplo anterior es fácil. Eso es exactamente lo que quería averiguar.
No te entiendo, Peter. Tú hablas de carne y yo de esqueleto. Si tienes huesos, puedes añadir carne. ¿Mi ejemplo no tiene los estados Pressed, Pressed? ¿Has mirado siquiera dentro de la clase GButton? Pedro, mi consejo: deja todo y estudia urgentemente la OOP. Es que en tu proyecto has tocado un techo, que se llama código hinchado, es fácilmente superable con la ayuda de la POO.
))) Entonces, ¿por qué empecé este tema? ) Ahora voy a estudiar OOP.
Tu ejemplo tiene botones, eventos de clic y estados de esos botones. Todo está bien. Pero Nikolai, sigo sin entender lo que preguntaba - ¿hay una opción en la clase CCcanvas para establecer un color específico a las líneas de degradado del marco? Viendo su ejemplo, puede pensar que hay... Si es así, ¿puede dibujar algo similar a mi ejemplo? Estoy interesado en la facilidad y las posibilidades de dibujar como tal utilizando la funcionalidad de esta clase, y tú estás hablando de la velocidad y las mejoras de la funcionalidad de la clase. Ese es un tema ligeramente diferente.
))) Entonces, ¿por qué empecé este tema? ) Ahora voy a estudiar OOP.
Es mejor empezar a aprender OOP con algo más simple que Canvas.
¿Has mirado siquiera dentro de la clase GButton?