Crear una biblioteca gráfica desde cero - página 15

 
Por lo demás es genial, sigue así.
 
Para ti, es muy fácil crear controles en kanvas:

1. Sacar varias funciones de dibujo de la clase kanvas, a saber, línea vertical, línea de montaña. rectángulo, rectángulo relleno, texto.

2. Para dibujar cada elemento, escribe una función: void Button(), void Checkbox()... etc.

3. En la función de dibujar elementos se incluyen conjuntos de llamadas a funciones de dibujo (líneas, rectángulos), con las que se "dibuja" la estructura de control requerida en el lienzo requerido.

4. una instancia de cada elemento creado debe estar vinculada a su ventana.

5. Las propiedades de cada instancia creada (texto X, Y, X_SIZE, Y_SIZE...) deben guardarse en un array o estructura para que otras funciones puedan leerlas/cambiarlas.

Y entonces seguirás el mismo camino ....)

Y todo esto en un lienzo, eso sí.

 
¿Y si necesitas otros objetos que puedan estar debajo del objeto que se dibuja en el fondo principal?
 
Aliaksandr Hryshyn:
¿Y si necesitas otros objetos que puedan estar debajo del objeto que se dibuja en el fondo principal?
Pon un ejemplo. Hay muchas situaciones diferentes con distintas soluciones.
 
Реter Konow:
Dame un ejemplo. Hay muchas situaciones diferentes con distintas soluciones.

En mi situación, probablemente bastaría con una lona, creo que haré lo que me has aconsejado.

Sobre todo porque ya existe un soporte mínimo para kanvas
 
Cada ventana es un lienzo separado e independiente.

Crear una ventana es tan sencillo como los demás elementos:

1. la ventana tiene unas propiedades básicas simples de varios rectángulos regulares que se dibujan de forma consistente en el lienzo creado llamando a la función FilledRectangle() (de la clase CCanvas) y pasándoles valores de plantilla o utilizables.

2. la ventana se dibuja antes que sus elementos. Esto se hace utilizando la función especial Draw_window(x, y, w, h); por ejemplo, llama a FilledRectangle() el número de veces necesario para construir la estructura de la ventana.

3. A continuación, se llaman funciones para dibujar los controles. Cada uno de ellos está construido de forma similar a una ventana, con una serie de rectángulos y marcos dibujados de uno en uno.

4. Las propiedades de cada instancia de cada elemento creado por la llamada a la función se escriben en cualquier opción de memoria disponible para las otras funciones, entre ellas:

Una función que capta el evento de encontrar el cursor por encima de las coordenadas del elemento dibujado, que en cada evento de movimiento del cursor hace un bucle a través de las coordenadas de todos los elementos dibujados y dibujados en esa ventana y encuentra el que está directamente debajo.

Una función que fija el evento de pulsar/reprimir sobre el elemento bajo el cursor y cambia su estado (si es interactivo) llamando a otra función que cambia los valores de los parámetros de ese elemento (color, icono...) y lo redibuja de nuevo.

Eso es suficiente para empezar.

 
Roman:

Para el HFT, creo que el 3D sería útil para crear un análisis gráfico del volumen de la copa y del flujo de órdenes.
Pero no he profundizado en cómo interpretar esa información.

¿dónde está disponible?

 
Existen varias categorías de controles, entre las que podemos distinguir dos principales:

1. Decorativo - líneas, marcos, rectángulos, iconos...

2. "Paramétrico", es decir, que tiene un parámetro.

El segundo tipo está representado por dos subcategorías:

1. elementos de entrada - ofrecen la posibilidad de cambiar el valor con "mecanismos" gráficos diseñados para diferentes tipos de parámetros. Estos elementos se dividen en varios grupos, por ejemplo, el estado lógico verdadero/falso (bool) establece el botón, la casilla de verificación y el botón de radio, y el valor del parámetro con los límites del rango y el paso se controla mediante un deslizador o campo de entrada. Para cada tipo de parámetro existen varios elementos del mismo tipo que permiten cambiar su valor de forma similar.

2. elementos de salida - traducen el valor en forma numérica, de texto o de otra forma transformada gráficamente. Entre ellos: celdas de tabla, etiquetas de texto, barras de progreso. Los indicadores y los gráficos también pertenecen a esta categoría, y su diferencia es únicamente la adaptabilidad a un gran volumen de datos de salida.


Como he dicho antes, dibujar elementos es sencillo y sin complicaciones. De hecho, sólo es cuestión de marcar un array con valores. Todas las funciones están en la clase CCanvas - líneas, rectángulos, marcos. Las funciones sólo necesitan pasar el array, que se almacena en el recurso y se conecta al objeto BITMAP_LABEL mediante la propiedad OBJPROP_BMPFILE.

El envoltorio de esta clase me molesta como la quinta pata de un perro. (Debe ser por eso que nadie ha creado bibliotecas en el Lienzo porque les han dicho desde arriba: "¡Debes montar la vaca sólo con una silla de montar! ;)).