VB.NET - Criando gráficos de barras simples
Podemos criar gráficos com o VB.NET de diversas maneiras. A mais fácil , e mais cara , é usar um componente pronto de terceiros , que geralmente tem um custo. Se você não quer gastar dinheiro com um componente deve tratar de criar você mesmo os seus gráficos. Isto é possível via código usando o System.Drawing e a API GDI+.
A GDI+ é a versão melhorada da GDI - Graphic Device Interface - e fornece funções de alto nível para tratamento de imagens e gráficos.
Neste artigo eu vou ser essencialmente prático , não vou entrar em detalhes sobre a GDI+ , vou apenas mostrar como podemos criar de forma simples um gráfico de barras estático para que você possa ter uma noção de como usar este recurso em sua aplicação VB.NET. Em um outro artigo irei falar de como gerar gráficos dinâmicos usando informações de um banco de dados.
Para criar um gráfico de barras bem simples no VB.NET via código temos que usar uma fórmula matemática para dimensionar corretamente o tamanho das barras. A fórmula pode ser expressa no Visual Basic assim :
valorIntervalor = ( intervaloMaximo - intervaloMinimo ) * ((valor - valorMinimo) / valorMaximo - valoMinimo)) + intervaloMinimo
Esta fórmula será usada para dimensionar as barras de forma correta. Vamos então ao código:
- Começamos declarando algumas variáveis :
Dim intIndex1 As Integer Dim lblBar() As Label Dim lngMax As Long Dim lngMin As Long Dim dblValores(10) As Double Dim lngLargura As Long Dim dblX As Double |
a variável dblValores(10) é um array de 10 posições com índice inicial
igual a zero e final igual a nove e nele iremos armazenar os valores do nosso
gráfico. Isto é necessário pois estou criando um gráfico estático.
A seguir nas linhas de
código estou criando uma instância da estrutura Point e da estrutura Size.
A estrutura Size representa o tamanho de uma região retangular com um par ordenado de largura e altura.
A estrutura Point representa um par ordenado inteiro de coordenadas x e y que define um ponto bidimensional.
Na sequência do código temos :
ReDim lblBar(9)
For intIndex1 = 0 To 9
With lblBar(intIndex1) .Location = objPosicao .BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D .BackColor = Color.Red .Size = objTamanho .Refresh() End With
objPosicao.Y += 16 Next intIndex1
dblValores(0) = 10 dblValores(1) = 16 dblValores(2) = 12 dblValores(3) = 5 dblValores(4) = 25 dblValores(5) = 40 dblValores(6) = 50 dblValores(7) = 40 dblValores(8) = 35 dblValores(9) = 60 dblValores(10) = -1
|
Estou criando um controle chamado lblBar que será usado para montar o gráfico e no formulário. Ele é do tipo Label e cada item tem suas propriedades definidas no laço For/Next.
A seguir estou atribuindo valores fictícios a cada indice do array dblValores() que irão servir para alimentar o gráfico de barras.
- Na continuação do código fazemos a verificação dos valores preparando para montagem do gráfico. Se não for possível criar o gráfico avisamos e saimos da rotina.
For dblX = 1
To 10
If dblValores(dblX) > lngMax Then lngMax = dblValores(dblX) End If If dblValores(dblX) < lngMin Then lngMin = dblValores(dblX) End If Next dblX If lngMax = lngMin Then MsgBox("Não é possível criar o gráfico.") Exit Sub End If
lngLargura = lblBar(0).Width |
- Finalmente a parte final do código na qual a partir dos valores aplicamos a fórmula e montamos o gráfico exibindo no formulário:
For intIndex1 = 0
To 9
' Resolve a formula w/W = (x-min)/(Max-min) lblBar(intIndex1).Width = (dblValores(intIndex1) - lngMin) / (lngMax - lngMin) * lngLargura lblBar(intIndex1).Visible = TruelblBar(intIndex1).Refresh() Next intIndex1 |
Vamos agora usar o código em um projeto VB.NET.
Inicie um novo projeto no Visual Studio.NET com as seguintes características (sinta-se a vontade para alterar a seu gosto.)
Este código você pode usar como esta ou fazer ajustes para a sua situação. Vou colocá-lo no evento click de um botão de comando de um formulário. Para isto vou criar um projeto do tipo Windows Forms com um botão de comando e algumas labels conforme abaixo:
Executando o projeto teremos :
Não vai dar para você criar aquelas imagens de fractais com este código mas ele pode quebrar o galho e gerar aquele gráfico de barras simples para sua aplicação sem custos adicionais.
Até o próximo artigo VB.NET...
José Carlos Macoratti