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

 
Caso contrário, é ótimo, continue.
 
Para você, é muito fácil criar controles sobre kanvas:

1. Retirar várias funções de desenho da classe kanvas, a saber, linha vertical, linha de montanha. retângulo, retângulo preenchido, texto.

2. Para desenhar cada elemento, escreva uma função: Botão void(), caixa de seleção void()... etc.

3. Na função de desenhar elementos você inclui conjuntos de chamadas para funções de desenho (linhas, retângulos), com os quais você "desenha" a estrutura de controle requerida na tela requerida.

4. Uma instância de cada elemento criado deve ser vinculada a sua janela.

5. As propriedades de cada instância criada (texto X, Y, X_SIZE, Y_SIZE...) devem ser salvas em uma matriz ou estrutura para que outras funções possam lê-las/modificá-las.

E então você seguirá o mesmo caminho ....)

E tudo isso em lona, lembre-se.

 
E se você precisar de outros objetos que possam estar debaixo do objeto que está desenhado sobre o fundo principal?
 
Aliaksandr Hryshyn:
E se você precisar de outros objetos que possam estar debaixo do objeto que está desenhado sobre o fundo principal?
Dê um exemplo. Há muitas situações diferentes com soluções diferentes.
 
Реter Konow:
Dê-me um exemplo. Há muitas situações diferentes com soluções diferentes.

Na minha situação, uma tela provavelmente seria suficiente, acho que farei o que você aconselhou.

Especialmente porque já existe um suporte mínimo para kanvas
 
Cada janela é uma tela separada e independente.

Criar uma janela é tão simples quanto os outros elementos:

1. A janela tem propriedades básicas simples de vários retângulos regulares que são consistentemente desenhados na tela criada chamando a função FilledRectangle() (da classe CCanvas) e passando para eles modelos ou valores utilizáveis.

2. A janela é desenhada antes de seus elementos. Isto é feito usando a função especial Draw_window(x, y, w, h); por exemplo, ela chama FilledRectangle() o número de vezes necessário para construir a estrutura da janela.

3. Em seguida, as funções são chamadas para desenhar os controles. Cada uma é construída de forma semelhante a uma janela, com uma série de retângulos e esquadrias desenhadas uma de cada vez.

4. As propriedades de cada instância de cada elemento criado pela chamada de função são gravadas em qualquer opção de memória disponível para as outras funções, entre as quais

Uma função que captura o evento de encontrar o cursor acima das coordenadas do elemento desenhado, que em cada evento de movimentação do cursor faz um laço através das coordenadas de todos os elementos desenhados e desenhados naquela janela e encontra o que está diretamente abaixo dele.

Uma função que fixa o evento de pressão/repressão no elemento sob o cursor e muda seu estado (se for interativo) chamando outra função que muda os valores dos parâmetros desse elemento (cor, ícone...) e o redireciona novamente.

Para começar, isso é suficiente.

 
Roman:

Para HFT, acho que 3D seria útil na criação de uma análise gráfica do volume do copo e do fluxo do pedido.
Mas como interpretar tais informações, ainda não me aprofundei.

onde ele está disponível ?

 
Há várias categorias de controles, entre as quais podemos distinguir duas categorias principais:

1. Decorativos - linhas, molduras, retângulos, ícones...

2. "Paramétrico" - ou seja, ter um parâmetro.

O segundo tipo é representado por duas subcategorias:

1. elementos de entrada - oferecem a possibilidade de alterar o valor com "mecanismos" gráficos projetados para diferentes tipos de parâmetros. Estes elementos são divididos em vários grupos, por exemplo, o estado lógico verdadeiro/falso (bool) define o botão, caixa de seleção e botão de rádio, e o valor do parâmetro com os limites da faixa e do passo é controlado por um deslizador ou campo de entrada. Para cada tipo de parâmetro há vários elementos do mesmo tipo que permitem alterar seu valor de forma semelhante.

2. elementos de saída - traduzem o valor em forma numérica, de texto ou outra forma graficamente transformada. Estes incluem: células de tabela, etiquetas de texto, barras de progresso. Os indicadores e gráficos também pertencem a esta categoria, e sua diferença é apenas a adaptabilidade a um grande volume de dados de saída.


Como disse anteriormente, os elementos de desenho são simples e descomplicados. Na verdade, é apenas uma questão de marcar uma matriz com valores. Todas as funções estão na classe CCanvas - linhas, retângulos, armações. As funções só precisam passar o array, que é então armazenado no recurso e conectado ao objeto BITMAP_LABEL usando a propriedade OBJPROP_BMPFILE.

O invólucro desta classe me perturba como a quinta perna de um cão. (Deve ser por isso que ninguém jamais criou bibliotecas em Tela, porque de cima lhes foi dito: "Você deve montar a vaca apenas com uma sela! ;)).
Razão: