Criar uma biblioteca gráfica a partir do zero - página 2

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

Tenho certeza de que não vale a pena fazer do zero.

Pessoas muito espertas gastaram muito tempo e conhecimento para fazer a mesma biblioteca padrão ou a biblioteca Anatoli.

As pessoas investiram tempo e conhecimento e seria uma tolice não usá-lo.

Deveríamos apenas pegar o melhor, do nosso ponto de vista, em ambos e construir um novo.

Precisamos aprender com os erros de outras pessoas. Nós faremos o nosso).

Somente PARA!

 
O objetivo final da biblioteca não é claro.
Que desvantagens de outras bibliotecas deve resolver ou expandir? Ou deveria se tornar uma ferramenta fundamentalmente nova? Deve ser algo orientado para a GUI ou orientado para o usuário?
Por exemplo, minha biblioteca iCanvas foi uma continuação lógica da biblioteca CCanvas a fim de melhorar a usabilidade dos gráficos do usuário, código mais curto e intuitivo ao codificar, aumentar a velocidade evitando funções assíncronas, ligando-se a um sistema de coordenadas de preço/tempo, e não apenas coordenadas XU da tela.
 
Nikolai Semko:
O objetivo final da biblioteca não é claro.

E este é um problema comum a todas as bibliotecas gráficas, até onde eu posso ver.

Todos os projetos oferecidos no fórum têm que resolver um de dois problemas: ou aumentar a renda do usuário, ou aumentar a eficiência de obter a mesma renda.

Não me lembro de um único autor de projeto que se preocupasse em mostrar exemplos que ilustrassem como resolver um desses problemas.

O exemplo mais marcante, lembro-me no fio "Canvas is cool", foi a apresentação de gráficos simplesmente fascinantes... Entretanto, como aumentou a renda do usuário (pelo menos do autor), ou como aumentou a eficácia de obtê-la - eu nunca entendi.

O mesmo vale para a biblioteca de Anatoly. Grande estrutura, bem pensada, mas... Tenho certeza de que nem o próprio autor usa todas as características desta biblioteca. Quanto aos usuários, acho que podemos esquecê-los.

Outro exemplo é o projeto de Peter Konov. Para as pessoas que não conseguem (não querem) entender o OOP é uma solução bastante funcional com boas características, mas... Novamente - nem um único exemplo mostrando um aumento de eficiência na geração de receita.


A meu ver, a maioria desses projetos é mais necessária para alimentar a vaidade de seus autores. Em geral, é uma coisa necessária. Mas, não se deve esperar nenhum "objetivo final". É como esperar que minha TS League (que é apenas uma coleção de todos os tipos de simples especialistas) monitore, lucre, grail... Embora seja apenas um indicador de vários princípios TS que trabalham com símbolos diferentes.

 
Georgiy Merts:

E este é um problema comum a todas as bibliotecas gráficas, até onde eu posso ver.

Todos os projetos oferecidos no fórum têm que resolver um de dois problemas: ou aumentar a renda do usuário, ou aumentar a eficiência de obter a mesma renda.

Não me lembro de pelo menos um autor de projeto ter se preocupado em mostrar exemplos que ilustrassem como resolver uma dessas tarefas.

Na verdade, esta é uma seção do fórum de programadores ..... Você não deve procurar por senso financeiro aqui)))) Eu mesmo prefiro resolver estas questões separadamente deste fórum.

Nikolai Semko:
O objetivo final da biblioteca não é claro.
Que desvantagens de outras bibliotecas deve resolver ou expandir as possibilidades? Ou deve se tornar uma ferramenta fundamentalmente nova? Deve ser algo orientado para a GUI ou orientado para o usuário?
Por exemplo, minha biblioteca iCanvas foi uma continuação lógica da biblioteca CCanvas a fim de aumentar a usabilidade de gráficos personalizados, código mais curto e intuitivo ao codificar, aumentar a velocidade evitando funções assíncronas, ligando-se a um sistema de coordenadas de preço/tempo, e não apenas coordenadas de tela XU.

Comecei com sua biblioteca, graças a você, depois a aperfeiçoei um pouco, depois mais alguns)))) finalmente mudaram tudo, incluindo funções reescritas de linhas, também funções de linhas largas da tela de origem, removi funções falsas, coloquei stub no evento. Ainda não abandonei completamente a estrutura W, embora haja pouco que reste lá também. Adicionei o cálculo da barra à esquerda e à direita por busca binária entre outros elementos e também acrescentei a própria busca binária com a capacidade de escolher maior ou menor valor. Também acrescentou a capacidade de construir a partir de arrays de qualquer tipo (timeseries/comuns ) e chegou à conclusão de que é necessário mudar a build))))))

 

Estou chegando em círculo completo.

Eu entendo a hierarquia.

Tenho que fazer o controle mais uma vez, mas ainda há algumas coordenadas que eu gostaria de colocar separadamente. Eu gostaria de colocá-los em círculo. Acho que o kotrol irá das coordenadas, portanto será mais verdadeiro e simplificará muito o sistema. É claro que posso estar errado em meus argumentos - mas até agora parece uma solução ingênua.

E o kotrol - isto não é nada além de um elemento básico de estilos - que em teoria deveria estar atrás das coordenadas.

Lógica - podemos ter um elemento sem estilos, mas não sem coordenadas

 
Alexandr Andreev:

Esta é na verdade uma seção do fórum de programadores ..... Você não deve procurar por senso financeiro aqui)))) Prefiro lidar com estas questões separadamente deste fórum.

Muito engraçado.

Há um fio ao lado onde há batalhas acaloradas que "ninguém vai trabalhar de graça" - você diz, "não vale a pena procurar pelo senso financeiro" ????

 
Georgiy Merts:

Muito engraçado.

Ao lado do tópico em que há batalhas acaloradas em que "ninguém trabalhará de graça" - você diz "não procure o sentido financeiro"?

Eu nem sequer estou reivindicando a autoria da biblioteca que recebi.... Muito menos seu componente financeiro.

Eu só queria saber como isso deve ser feito - corretamente.

Se houver uma pequena necessidade, você pode até reunir o código no ferro-velho.

Embora idealmente eu gostaria de fazer uma mini versão desta versão correta. Para código mínimo e máximo de utilidade.

 
Nikolai Semko:
O objetivo final da biblioteca não é claro .
Que deficiências de outras bibliotecas deve resolver ou expandir? Ou deveria se tornar uma ferramenta fundamentalmente nova? Deve ser algo orientado para a GUI ou orientado para o usuário?
Por exemplo, minha biblioteca iCanvas foi uma continuação lógica da biblioteca CCanvas a fim de melhorar a usabilidade de gráficos personalizados, código mais curto e intuitivo ao codificar, aumentar a velocidade evitando funções assíncronas, e ligar-se a um sistema de coordenadas de preço/tempo, não apenas coordenadas de tela XU.

Nikolai, bem-vindo.

O objetivo final é tentar resolver as deficiências das ferramentas que já estão em vigor no momento.

Suponho que muito provavelmente será uma continuação do desenvolvimento da biblioteca padrão, a fim de melhorar a facilidade de ligá-la aos projetos e melhorar o componente gráfico, deixando os objetos gráficos e passando para a tela.

Mas, no geral, não vamos especular sobre qual será o resultado.

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

Nikolai, bem-vindo.

O objetivo final é tentar resolver as deficiências das ferramentas que já estão em vigor no momento.

Suponho que muito provavelmente será uma continuação do desenvolvimento da biblioteca padrão, a fim de melhorar a facilidade de ligá-la aos projetos e melhorar o componente gráfico, deixando os objetos gráficos e a transição para a tela.

Mas em geral, não vamos nos intrigar com o que vai acontecer.

Resumidamente, sobre engenharia :

Se você tem uma vontade de melhorar alguns "A" através da reengenharia, você deve especificar suas falhas críticas. Basta listá-los e explicar por que é impossível eliminá-los no processo de desenvolvimento evolutivo de "A".

Por outro lado, ninguém o proíbe. Se você gosta de escrever código, escreva-o... Você reescreverá "A", mas à sua própria maneira, mas será novo

 
Alexandr Andreev:

Estou chegando em círculo completo.

Eu entendo a hierarquia.

Tenho que fazer o controle mais uma vez, mas ainda há algumas coordenadas que eu gostaria de colocar separadamente. Eu gostaria de colocá-los em círculo. Acho que o kotrol irá das coordenadas, portanto será mais verdadeiro e simplificará muito o sistema. É claro que posso estar errado em meus argumentos - mas até agora parece uma solução ingênua.

E o kotrol - isto não é nada além de um elemento básico de estilos - que em teoria deveria estar atrás das coordenadas.

Lógica - podemos ter um elemento sem estilos, mas não sem coordenadas.

Você não precisa nem discutir com isso, é verdade ))))

Estilos, temas - tudo é possível de aparafusar mais tarde, se você inicialmente prever tal adição. Na verdade, tudo isso deve ocorrer em um controle básico e, portanto, o aumento da funcionalidade também irá nesta classe.

Em relação às coordenadas, vejo dois tipos - coordenadas absolutas, que são calculadas em relação ao gráfico e coordenadas locais, que são calculadas em relação à matriz.

Se, por exemplo, um formulário é apresentado, sua colocação em um gráfico é tratada por coordenadas absolutas. Se um botão é colocado em um formulário, ele deve ser posicionado em relação ao recipiente em que é colocado, ou seja, em relação ao formulário.

Quando os eventos do movimento do mouse são recebidos, obtemos as coordenadas absolutas do ponto do cursor em relação ao gráfico no manipulador. Ao verificar se o cursor atinge a forma ou qualquer um dos elementos, precisamos comparar a coordenada absoluta do cursor com a posição atual do elemento, levando em conta seu posicionamento. Ou seja, para uma forma será simplesmente uma comparação com suas coordenadas e tamanho atuais, mas para um botão será calculado a posição absoluta do botão no sistema de coordenadas. Ou seja, a coordenada X para comparação será calculada da seguinte forma X = (Pai===nulo)?X():(X()+Parente.X()), onde X() é uma função de classe que retorna a posição X do item. Entretanto, a verificação da presença do próprio pai pode ser realizada dentro desta função. Como resultado, se um elemento tiver um pai, então a coordenada será devolvida como adição da coordenada do pai à sua própria coordenada no pai. De fato, o número de elementos aninhados pode ser arbitrário e cada um deles é posicionado em relação ao elemento sobre o qual está localizado, não em relação ao gráfico, de modo que a coordenada absoluta pode ser calculada recursivamente.