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

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

Seguro que no merece la pena hacerlo desde cero.

Gente muy inteligente ha invertido mucho tiempo y conocimientos para hacer la misma biblioteca estándar o la biblioteca Anatoli.

La gente ha invertido tiempo y conocimientos y sería una tontería no utilizarlos.

Deberíamos tomar lo mejor, desde nuestro punto de vista, de ambos y construir uno nuevo.

Tenemos que aprender de los errores de los demás. Haremos la nuestra).

¡Sólo PARA!

 
El objetivo final de la biblioteca no está claro.
¿Qué desventajas de otras bibliotecas debería resolver o ampliar? ¿O debería convertirse en una herramienta fundamentalmente nueva? ¿Debe ser algo orientado a la GUI o al usuario?
Por ejemplo, mi librería iCanvas fue una continuación lógica de la librería CCanvas con el fin de mejorar la usabilidad de los gráficos del usuario, un código más corto e intuitivo a la hora de codificar, aumentar la velocidad evitando las funciones asíncronas, enlazar con un sistema de coordenadas precio-tiempo, no sólo coordenadas de pantalla XU.
 
Nikolai Semko:
El objetivo final de la biblioteca no está claro.

Y este es un problema común a todas las bibliotecas gráficas, por lo que veo.

Todos los proyectos que se ofrecen en el foro tienen que resolver uno de estos dos problemas: o bien aumentar los ingresos del usuario, o bien aumentar la eficiencia para obtener los mismos ingresos.

No recuerdo que ningún autor de proyectos se haya molestado en mostrar ejemplos que ilustren la solución a uno de estos problemas.

El ejemplo más llamativo, que recuerdo en el hilo "Canvas is cool", fue la presentación de gráficos simplemente hipnotizantes... Sin embargo, nunca entendí cómo aumentaba los ingresos del usuario (al menos del autor) o cómo aumentaba la eficacia de su obtención.

Lo mismo ocurre con la biblioteca de Anatoly. Gran estructura, bien pensada, pero... Estoy seguro de que ni el propio autor utiliza todas las funciones de esta biblioteca. En cuanto a los usuarios, creo que podemos olvidarnos de ellos.

Otro ejemplo es el proyecto de Peter Konov. Para la gente que no puede (no quiere) entender la POO es una solución bastante funcional con buenas características, pero... De nuevo, ni un solo ejemplo que demuestre un aumento de la eficiencia en la generación de ingresos.


En mi opinión, la mayoría de estos proyectos son más necesarios para alimentar la presunción de sus autores. En general, es algo necesario. Pero no hay que esperar ningún "objetivo final". Es como esperar que mi liga de TS (que no es más que una colección de todo tipo de simples expertos) controle, gane, gra... aunque sólo es un indicador de varios principios de la ST que funcionan en diferentes símbolos.

 
Georgiy Merts:

Y este es un problema común a todas las bibliotecas gráficas, por lo que veo.

Todos los proyectos que se ofrecen en el foro tienen que resolver uno de estos dos problemas: o bien aumentar los ingresos del usuario, o bien aumentar la eficiencia para obtener los mismos ingresos.

No recuerdo que al menos uno de los autores del proyecto se haya molestado en mostrar ejemplos que ilustren cómo resolver una de estas tareas.

De hecho, esta es una sección del foro de programadores ..... No hay que buscar el sentido financiero aquí))) Yo mismo prefiero resolver estas cuestiones por separado de este foro.

Nikolai Semko:
El objetivo final de la biblioteca no está claro.
¿Qué desventajas de otras bibliotecas debería resolver o ampliar las posibilidades? ¿O debería convertirse en una herramienta fundamentalmente nueva? ¿Debe ser algo orientado a la GUI o al usuario?
Por ejemplo, mi biblioteca iCanvas fue una continuación lógica de la biblioteca CCanvas con el fin de aumentar la usabilidad de los gráficos personalizados, código más corto e intuitivo al codificar, aumentar la velocidad al evitar las funciones asíncronas, enlazar con un sistema de coordenadas precio-tiempo, no sólo coordenadas de pantalla XU.

He comenzado con su biblioteca, gracias a usted, entonces yo he refinado un poco, entonces algunos más)))) finalmente cambió todo, incluyendo las funciones reescritas de líneas, también la función de línea ancha de la fuente Kanvas, eliminado las funciones falsas, poner stub en el evento. no han abandonado por completo la estructura W todavía, aunque hay poco que queda allí también. He añadido el cálculo de la barra a la izquierda y a la derecha mediante la búsqueda binaria entre otros elementos y también he añadido la búsqueda binaria en sí misma con la posibilidad de elegir un valor mayor o menor. También se ha añadido la posibilidad de construir a partir de matrices de cualquier tipo (timeseries/common ) Y llegó a la conclusión de que es necesario cambiar el construct))))))

 

Estoy cerrando el círculo.

Entiendo la jerarquía.

Tengo que hacer el control una vez más, pero todavía hay algunas coordenadas que me gustaría poner por separado. Me gustaría ponerlos en un círculo. Creo que el kotrol irá desde las coordenadas, por lo que será más verdadero y simplificará mucho el sistema. Por supuesto, puede que me equivoque en mis argumentos, pero hasta ahora parece una solución ingenua.

Y kotrol - esto no es más que un elemento básico de los estilos - que en teoría debería estar después de las coordenadas.

Lógica - podemos tener un elemento sin estilos, pero no sin coordenadas

 
Alexandr Andreev:

En realidad se trata de una sección del foro de programadores ..... No hay que buscar el sentido financiero aquí))) Yo mismo prefiero tratar estos temas por separado de este foro.

Muy divertido.

Hay un hilo al lado en el que se combate acaloradamente que "nadie trabajará gratis" -dices que "no vale la pena buscar el sentido financiero"?

 
Georgiy Merts:

Muy divertido.

Al lado del tema en el que hay acaloradas batallas de que "nadie va a trabajar gratis" - dices "no busques el sentido financiero"?

Ni siquiera reclamo la autoría de la biblioteca que recibí.... Y mucho menos su componente financiero.

Sólo quería saber cómo debe hacerse, correctamente.

Si hay una pequeña necesidad, puedes incluso recoger el código en la chatarra.

Aunque lo ideal sería hacer alguna versión mini de este correcto. Para un código mínimo y una utilidad máxima.

 
Nikolai Semko:
El objetivo final de la biblioteca no está claro .
¿Qué carencias de otras bibliotecas debería resolver o ampliar? ¿O debería convertirse en una herramienta fundamentalmente nueva? ¿Debe ser algo orientado a la GUI o al usuario?
Por ejemplo, mi biblioteca iCanvas fue una continuación lógica de la biblioteca CCanvas para mejorar la usabilidad de los gráficos personalizados, un código más corto e intuitivo a la hora de codificar, aumentar la velocidad evitando las funciones asíncronas, y enlazar con un sistema de coordenadas precio-tiempo, no sólo con coordenadas de pantalla XU.

Nikolai, bienvenido.

El objetivo final es intentar subsanar las deficiencias de las herramientas que ya existen en la actualidad.

Supongo que lo más probable es que se trate de una continuación del desarrollo de la librería estándar para mejorar la facilidad de conexión con los proyectos y mejorar el componente gráfico, dejando los objetos del gráfico y pasando al canvas.

Pero en general, no especulemos sobre cuál será el resultado.

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

Nikolai, bienvenido.

El objetivo final es intentar subsanar las deficiencias de las herramientas que ya existen en la actualidad.

Supongo que lo más probable es que sea una continuación del desarrollo de la librería estándar para mejorar la facilidad de conexión a los proyectos y mejorar el componente gráfico, dejando los objetos de gráfico y la transición a canvas.

Pero, en general, no hay que darle vueltas a lo que va a pasar.

Brevemente, sobre la ingeniería :

Si tiene ganas de mejorar alguna "A" mediante la reingeniería, debe especificar sus defectos críticos. Basta con enumerarlos y explicar por qué es imposible eliminarlos en el proceso de desarrollo evolutivo de "A".

Por otro lado, nadie lo prohíbe. Si te gusta escribir código, escríbelo... Reescribes "A", pero a tu manera, pero será nuevo

 
Alexandr Andreev:

Estoy cerrando el círculo.

Entiendo la jerarquía.

Tengo que hacer el control una vez más, pero todavía hay algunas coordenadas que me gustaría poner por separado. Me gustaría ponerlos en un círculo. Creo que el kotrol irá desde las coordenadas, por lo que será más verdadero y simplificará mucho el sistema. Por supuesto, puede que me equivoque en mis argumentos, pero hasta ahora parece una solución ingenua.

Y kotrol - esto no es más que un elemento básico de los estilos - que en teoría debería estar después de las coordenadas.

Lógico - podemos tener un elemento sin estilos, pero no sin coordenadas.

No hace falta ni que lo discutas, es cierto )))

Estilos, temas... todo es posible atornillarlo más tarde, si es que se prevé inicialmente tal adición. De hecho, todo esto debería ocurrir en un control básico y, por lo tanto, el aumento de la funcionalidad también irá en esta clase.

En cuanto a las coordenadas, veo dos tipos: coordenadas absolutas, que se calculan en relación con el gráfico y coordenadas locales, que se calculan en relación con el padre.

Si, por ejemplo, se renderiza un formulario, su colocación en un gráfico se maneja mediante coordenadas absolutas. Si se coloca un botón en un formulario, debe posicionarse en relación con el contenedor en el que se coloca, es decir, en relación con el formulario.

Cuando se reciben eventos de movimiento del ratón, obtenemos las coordenadas absolutas del punto del cursor relativas al gráfico en el manejador. Al verificar que el cursor toca el formulario o alguno de los elementos, debemos comparar la coordenada absoluta del cursor con la posición actual del elemento, teniendo en cuenta su posicionamiento. Es decir, para un formulario será simplemente una comparación con sus coordenadas y tamaño actuales, pero para un botón será calcular la posición absoluta del botón en el sistema de coordenadas. Es decir, la coordenada X para la comparación se calculará de la siguiente manera X = (Parent==null)?X():(X()+Parent.X()), donde X() es una función de clase que devuelve la posición X del elemento. Sin embargo, la comprobación de la presencia del propio padre puede realizarse dentro de esta misma función. Como resultado, si un elemento tiene un padre, entonces la coordenada será devuelta como la adición de la coordenada del padre a su propia coordenada en el padre. De hecho, el número de elementos anidados puede ser arbitrario y cada uno de ellos se posiciona en relación con el elemento en el que se encuentra, no en relación con el gráfico, por lo que la coordenada absoluta se puede calcular recursivamente.

Razón de la queja: