Desenhando gráficos e funções
O Visual Basic fornece muitas possibilidades de desenhar gráficos : linhas , curvas , caixas , etc. Geralmente os gráficos são feitos através dos objetos Printer , Form ou Picture . Eles representam a superfície as quais os gráficos podem ser aplicados.
Os métodos para desenhar gráficos que o VB suporta são :
As propriedades gráficas que o VB suporta são:
Cada método gráfico tem sua saída para um formulário, um picture box ou para o objeto Printer. Para indicar onde você quer desenhar , informe antes do método gráfico o nome do objeto usado. Se você omitir o objeto o VB assume que você quer desenhar no formulário onde o código esta anexado. Ex:
MeuForm.PSet (500, 500)
picPicture1.PSet (500, 500)
PSet (500, 500)
Cada área de desenho tem seu próprio sistema de coordenadas que termina qual unidade aplicar para as coordenadas.
Podemos desenhar pontos , linhas e formas com os métodos gráficos do VB. Para desenhar uma linha entre duas coordenadas usamos o método Line que tem a seguinte sintaxe:
object.Line [Step] (x1, y1) [Step] - (x2, y2), [color], [B][F]
Onde:
Parte | Descrição |
object | Indica o objeto a qual o gráfico será aplicado. |
Step | Especifica que o ponto inicial das coordenadas é relativo a posição atual do gráfico dada pelas propriedades CurrentX e CurrentY . |
(x1, y1) | Valor que indica as coordenadas do ponto inicial para a linha .(A propriedade ScaleMode determina a unidade de medida usada.). Obrigatório. |
Step | Indica que o ponto final das coordenadas é relativo para ponto inicial. |
(x2, y2) | Valor que indica as coordenadas do ponto final da linha a ser desenhada. |
color | Valor que indica a cor usada para desenhar a linha.Você pode usar a função RGB a funcção QBColor |
B | Se incluído desenha uma caixa usando as coordenas. |
F | Se B for usado F indica que a caixa será preenchida com a mesma cor usada para desenhar a caixa. |
Para desenhar uma linha somente o segundo par de coordenadas é obrigatório e os valores de x e y podem ser inteiros ou fracionários. Exemplo que desenha uma linha inclinada:
Line (500, 500)(2000,
2000) |
O código
abaixo desenha várias linhas de largura diferentes:
|
Desta forma o VB desenha uma linha que inclue o primeiro ponto final , mas não o último ponto. Para desenhar o último ponto podemos usar o método Pset:
PSet [Step] (0, 0)[, color]
Como o primeiro par de coordenadas é opcional , se você omití-lo o VB usa o objeto atual x e y como ponto final. A posição atual pode ser definida pelas propriedades CurrentX e CurrentY. Para desenhar um triângulo podemos usar a conexão com três pontos:
'
define a coordenada x do ponto de inicio
CurrentX
= 1500
' define a coordenada
y do ponto de inicio. CurrentY
= 500
' desenha uma linha
para abaixo e a direita do ponto de inicio. Line
-(3000, 2000)
' desenha uma linha
para a esquerda do ponto atual Line
-(1500, 2000)
' desenha uma linha
para cima e a direita do ponto inicial.
Line
-(1500, 500) |
Os métodos
Pset , Line e Circle podem usar a palavra
chave Setp
que define
que o local do ponto é relativo ao último ponto desenhado; O VB
adiciona os valores de x e y ao último ponto desenhado. Ex:
Line (100, 200)(150, 250)
é igual a
Line (100, 200)Step(50, 50)
Para aplicar cor você usa o argumento
color . Para desenhar um linha azul fazemos:
Line (500, 500)(2000, 2000), RGB(0, 0, 255)
Se você omitir o argumento color a propriedade Forecolor definida será usada como cor.
Para limpar a área de de desenho basta usar o método Cls. A sintaxe é :
[object.]Cls
Trabalhando com escalas
Um dos primeiros conceitos que você deve compreender ao trabalhar com gráficos no VB é o conceito de escala. O tamanho de um objeto ou gráfico na tela depende da unidade de medida que você escolheu para criá-lo. As unidades de medidas mais usadas são : polegadas , centímetros , milímetros e pixels. Além destas medidas o VB suporta outras unidades de medidas que servem para medir o tamanho de um objeto são elas:
Points - 72 points formam uma polegada. Geralmente é usada para fontes de texto.
Twips - Existem 1440 twips em uma polegada. Esta medida fornece mais precisão para medidas do que Points ( 1 twip = 1/20 de um Point) , tornando possível gráficos mais precisos.
Characters - Utiliza twips fixos : 120 twips na horizontal por 240 twips na vertical . Não é muito utilizada.
User - Tipo definido pelo usuário. Uma unidade muito poderosa que você pode usar como uma escala. Você define o número de unidades dentro da área ( altura : de cima até embaixo e largura : da esquerda para a direita).
Junto com esta propriedades a propriedade ScaleMode identifica qual unidade vai ser usada. Desde que você defina a propriedade ScaleMode o VB ajusta as propriedades de tamanho da área para se adequar a seleção definida.
Quando você cria gráficos eles serão criados na área cliente de uma janela, e, em geral você estará usando uma posição x/y dentro desta área para direcionar o VB onde ele vai colocar o gráfico. Os limites da área cliente são definidos pelas propriedades ScaleWidth e ScaleHeight. Para definir as coordenadas superior/esquerda iniciais você usa as propriedades : ScaleTop e ScaleLeft. Isto pode ser útil se você sabe que a equação do seu gráfico somente se aplica a uma área a alguma distância da coordenada original ( x=0 e y=0)
Usando os métodos Gráficos
Se não considerarmos o objeto Print podemos dizer que temos 6 métodos gráficos que já foram mencionados no início deste artigo. A seguir vou dar mais alguns detalhes sobre os mais importantes destes métodos:
Nota: Para testar os códigos de cada exemplo abaixo crie um projeto no VB e no formulário padrão insira um objeto Picture com o nome de Picture1.
O código abaixo desenha 20 círculos. Eu estou movendo progressivamente o centro para a direita começando na coordenada X=500
For i = 1 to
2000 Step 100 picture1.circle (i + 500, 1000), 400, vbGreen Next i |
|
Apaga todos os gráficos que foram desenhados no objeto.
Ex: picture1.cls
O código abaixo cria 20 linhas verticais posicionadas da esquerda para a direita.
For i = 1 to 1000 Step 100 picture1.line (i+500,500)-(i+500,4000), vbBlue Next i |
|
Para desenhar caixas basta incluir um argumento como mostrado no código a seguir:
For i =
1 To 4000 Step 400 Picture1.Line (i + 200, 500)-(i + 400, 1000), vbBlue, BF Next i |
|
O argumento BF incluído no final do código diz ao VB para desenhar caixas preenchidas.
Pset é o método mais básico que o VB oferece para desenhar. Usando Pset você pode definir a cor de qualquer ponto dentro de uma área. Por exemplo , o código abaixo obtêm cores e coordenadas aleatórias:
Private
Sub Command1_Click() Dim x as
integer |
PictureBox preenchida com os pontos desenhados por Pset. |
Pset é poderoso , você pode desenhar qualquer coisa com ele. Você só tem que controlar a localização de cada ponto.
Você já percebeu que o ponto forte do VB não são os métodos gráficos. Na realidade eles são muito simples , mas nem tudo esta perdido. Você pode criar gráficos mais sofisticados usando as API´s do Windows.
Percebendo a lacuna a Microsoft criou as DLL´s conhecidas como DirectX que podem ser usadas para obter efeitos gráficos complexos e com bom desempenho. (Vamos falar sobre o DirectX em um outro artigo.)
Para terminar o artigo vou mostrar como você pode criar um projeto no VB para desenha equações matemáticas. Vai ser um projeto simples para lhe dar a idéia de como você pode trabalhar com os métodos aqui descritos. Abaixo temos o formulário do projeto:
Olhando para o formulário acima temos:
O código que esta no formulário é o seguinte :
Option
Explicit Dim i As Integer Dim x As Single Dim y As Single Private Sub Command1_Click() Private Sub Command2_Click() Private Sub Command3_Click() Private Sub Command4_Click() Private Sub Command5_Click() Private Sub Command6_Click() Private Sub Command7_Click() Private Sub Form_Load() |
O funcionamento é bem simples:
O resultado produzido após clicar em todos os botões será:
Fique a vontade para melhorar o código e criar um super programa para desenhar funções matemáticas.
Se você não sabe por onde começar vou deixar abaixo três links para você pegar programas prontos que fazem exatamente isto. Estude o código com dedicação e aprenda como fazer.
Até o próximo artigo VB.
Josè Carlos Macoratti