De que se trata o artigo

Da utilização a biblioteca FPVectorial para criar, ler e modificar arquivos de imagens vetoriais utilizando o Lazarus/Free Pascal ou o Delphi. Também sobre como renderizar um gráfico vetorial na tela, além de converter entre formatos.

Para que serve

O principal uso para imagens vetoriais está no desenvolvimento de aplicativos voltados para os mercados de desenho industrial, propaganda, cartografia, geologia e engenharia de modo geral. Vale a pena ainda lembrar que o formato SVG vem ganhando cada vez mais destaque como um formato utilizado para mostrar gráficos redimensionáveis em páginas da internet. Aplicativos Web implementados em Pascal no lado do servidor podem utilizar o FPVectorial para criar imagens SVG.

Em que situação o tema é útil

Os formatos de imagens vetoriais são inúmeros e amplamente utilizados. Os programas que utilizam este tipo de arquivo vão do Corel Draw ao AutoCAD, passando pelo Inkscape e pelo Microstation. Do mesmo modo como estes programas podem ler, modificar e salvar arquivos vetoriais, também é possível fazer isto com a biblioteca FPVectorial escrita em Pascal.

FPVectorial

Uma imagem vetorial não tem sua resolução limitada por pixels. Pode-se dizer que é uma imagem matemática, e seu tamanho pode expandir por ser calculado em tempo real. Entre os tipos de imagens vetoriais mais conhecidos está o formato dxf do AutoCad. Neste artigo vamos entender como funcionam essas imagens vetoriais e como é possível construí-las utilizando a biblioteca FPVetorial, que é uma biblioteca 100% desenvolvida em Object Pascal.

O tipo de imagem com o qual programadores Pascal estão mais familiarizados com certeza é o mapa de bits. A principal classe que implementa suporte a este tipo de imagem tanto no Delphi quanto no Lazarus é o TBitmap. Além desta classe que representa uma imagem armazenada na memória também há as classes destinadas a desenhar figuras geométricas e textos, que são o TCanvas, TPen, TBrush e TFont. No Lazarus há ainda a classe TLazIntfImage que oferece acesso rápido aos pixels da imagem. Além disso, também há várias outras bibliotecas que oferecem suporte a este tipo de formato de imagem, por exemplo, o Graphics32 que funciona no Delphi e no Lazarus. Neste tipo de formato a imagem é composta por uma matriz de pixels, sendo que cada pixel tem uma cor associada a ele. A tela do computador é uma superfície que exibe imagens do tipo mapa de bits e por isso mesmo que o tipo de imagem mais utilizado nos computadores é este.

Além deste tipo de imagem há outro menos conhecido, mas amplamente utilizado nas áreas desenho industrial, propaganda, cartografia, geologia e engenharia de modo geral: as imagens vetoriais. Os conceitos básicos das imagens vetoriais são completamente diferentes das imagens de mapa de bits. Imagens vetoriais são descritas em termos de elementos como textos, linhas, polígonos e outros, e por isso mesmo que é possível modificar cada elemento independentemente dos outros, além de alterar a ordem em que são desenhados. Nas imagens de mapa de bits isso não é possível e todos devem estar familiarizados com a experiência de escrever um texto numa imagem utilizando o Paint do Windows XP para depois perceber que não é possível modificar o texto, ou tentar mover parte de uma imagem e perceber que o fundo não pode ser mantido. Isto ocorre pois este programa trata de imagens de mapa de bits e a melhor forma para poder modificar elementos individuais de uma imagem é mudar o paradigma e utilizar uma imagem vetorial. Os formatos vetoriais são inúmeros, mas ultimamente um vem ganhando cada vez mais destaque: o SVG. Este é o formato de imagem vetorial recomendado pelo World Wide Web Consortium para se utilizar em páginas da internet. Outros formatos são o DXF e DWG do AutoCAD, os arquivos de metafile do Windows (*.wmf), arquivos CDR do CorelDraw, o código G de máquinas CNC, o PostScript, além de também poder estar dentro de formatos de documentos, como o PDF por exemplo.

Outra característica inata das imagens vetoriais é poder redimensionar a imagem sem perder resolução. Como não há um mapeamento único da imagem para os pixels da tela, tudo depende da forma como a imagem é desenhada e ao desenhar é possível também escalar as coordenadas sem deixar a imagem borrada. A maioria dos formatos vetoriais permite que se especifique as coordenadas do desenho em unidades reais, sendo que o programa precisa verificar a resolução da tela para poder mostrar a imagem em tamanho real, mas o SVG é uma notável exceção que não permite utilizar unidades reais no desenho.

A biblioteca fpvectorial foi criada pensando nessas características básicas das imagens vetoriais. Ela atualmente suporta documentos vetoriais com uma página que pode conter um misto de caminhos, elementos e textos. O caminho é a estrutura mais básica de uma imagem vetorial, ele é um conjunto de segmentos interligados. Os segmentos podem ser retos ou curvos e quando são curvos eles são descritos por uma curva de bézier, que é um método eficiente para descrever curvas. Os elementos são outras figuras geométricas, como por exemplo retângulos, linhas, elipses, medidas de dimensões, entre outros. Elementos textuais contêm texto codificado em UTF-8. Esta divisão de tipos de estruturas foi feita, pois o primeiro uso da biblioteca fpvectorial foi numa máquina de CNC que realiza a usinagem de materiais. Para se utilizar imagens vetoriais em máquinas de CNC é desejável que não hajam elementos complexos como elipses ou textos, apenas retas e curvas, e é por isso que os caminhos ocupam um lugar de destaque no fpvectorial. Antes de utilizar uma imagem vetorial numa máquina de usinagem é necessário converter seus elementos e textos em caminhos, algo que pode ser feito com a ajuda de um programa de desenho, como o CorelDraw.

...
Quer ler esse conteúdo completo? Tenha acesso completo