Atenção: esse artigo tem um vídeo complementar. Clique e assista!

De que se trata o artigo

O artigo trata do Microsoft Chart Controls, um componente para a geração de gráficos. O mesmo possui uma série de funcionalidades, tais como gráficos no estilo “pizza”. Essa extensão pode ser utilizada tanto em aplicações Windows Forms como ASP.NET.

Em que situação o tema é útil

É útil no desenvolvimento de aplicações que necessitem gerar relatórios em forma de gráfico. O Microsoft Chart Controls conta com mecanismos que tornam possível a construção dos mais diversos tipos de gráficos, bem como recursos para a configuração da aparência destes elementos, aplicação de efeitos variados, geração de arquivos de imagem, dentre outros aspectos.

Microsoft Chart Controls – Crie gráficos no .NET

A criação de gráficos dentro de aplicações é sem dúvida muito importante. O objetivo é mostrar as principais características da biblioteca Microsoft Chart Controls. Desta forma, iremos construir alguns exemplos que utilize as principais funcionalidades desta extensão (geração dos mais variados tipos de gráficos). Sua facilidade na integração com ADO.NET e até mesmo com Hibernate, será um dos pontos de explicação deste artigo. Além da possibilidade de integração com ASP.NET MVC.

A visualização de informações em um formato gráfico é bem mais intuitiva, além de normalmente corresponder a um sumário que engloba um grande volume de dados. Estas duas características são extremamente desejáveis em aplicações de gerenciamento e monitoração.

Comparações entre variáveis que possuam algum valor de negócio são uma das justificativas plausíveis para a geração de gráficos. Sistemas voltados aos níveis gerenciam e com foco no apoio à tomada de decisão constituem exemplos de softwares que fazem uso extensivo de gráficos para os mais variados tipos de análise, utilizando de técnicas de BI (Business Intelligence).

A meta deste artigo é apresentar como os mecanismos do Microsoft Chart Controls são utilizados para a construção de soluções em .NET voltada à análise de informações. Para isto, serão gerados exemplos em Windows Forms e ASP.NET (Web Forms e MVC), buscando assim demonstrar como os recursos disponíveis podem ser empregados na obtenção dos mais variados tipos de gráficos.

Nota do DevMan

BI (sigla em inglês para "Business Intelligence"; termo também conhecido como "Inteligência Empresarial") é um conjunto de técnicas que envolvem a coleta, o processamento e a geração de informações a partir de dados de operações cotidianas de uma organização. Este procedimento busca, assim, prover análises que auxiliem profissionais de gestão em atividades relacionadas à tomada de decisões.

Microsoft Chart Controls

Gráficos representam, sem sombra de dúvidas, um meio de sintetizar e simplificar a representação de largos conjuntos de informações, algo que não seria tão funcional e de rápida assimilação se baseado apenas em números. A extensão Microsoft Chart Controls existe desde o .NET Framework 3.5, sendo que nesta primeira versão a mesma era instalada separadamente e após o ambiente de desenvolvimento ter sido implantado. O .NET Framework 4.0 já incorpora nativamente os recursos que constituem esta tecnologia.

Com os recursos dos Microsoft Chart Controls torna-se possível:

· A montagem de gráficos dos mais variados tipos, desde os mais tradicionais como de colunas ou “pizza”, até representações mais complexas como aquelas de aparência piramidal, por exemplo;

· A customização da aparência dos diversos elementos que constituem um gráfico, tais como títulos, legendas, áreas e séries de dados;

· Funcionalidades para a exportação de um gráfico como uma imagem (englobando formatos como .bmp, .jpg, .gif, .png, por exemplo);

· A aplicação de fórmulas financeiras e estatísticas sobre os dados que estão sendo vinculados a um gráfico (por exemplo, a soma dos valores mostrados).

O elemento básico para a montagem de um gráfico é um controle do tipo Chart. Existem versões desta classe (e das demais classes relacionadas à mesma) em dois namespaces distintos:

· System.Windows.Forms.DataVisualization.Charting (Windows Forms);

· System.Web.UI.DataVisualization.Charting (ASP.NET Web Forms).

Importante frisar que o ASP.NET MVC não conta nativamente com o suporte à extensão Microsoft Chart Controls, o que não impede o uso desta tecnologia dentro de soluções MVC. O exemplo demonstrado mais adiante descreve detalhadamente como essa questão pode ser contornada.

A classe Chart faz parte de uma categoria de componentes conhecidos como databound controls. Controles deste tipo contam normalmente com uma propriedade de nome DataSource em que se associa um agrupamento de dados, ao passo que uma chamada ao método DataBind resulta na renderização do componente com base nas informações que foram vinculadas ao mesmo. Uma ampla gama de fontes de dados pode ser utilizada na geração de gráficos:

· Dados obtidos via ADO.NET, como objetos do tipo DataTable;

· Conjuntos de pontos que empregam recursos da própria classe Chart e cujo conteúdo é gerado e adicionado em tempo de execução a um gráfico;

· Coleção de objetos obtidos via Entity Framework ou outro mecanismo de manipulação de informações (NHibernate, Enterprise Library, Web Services, soluções próprias etc.).

Nota do DevMan

O Microsoft Enterprise Library é um conjunto de componentes/funcionalidades conhecidos como "application blocks", os quais podem ser empregados para a construção de soluções na plataforma .NET. Dentre os recursos oferecidos por esta biblioteca estão mecanismos de log, validação, acesso a dados (incluindo mapeamento objeto-relacional) e tratamento de exceções.

Nota do DevMan

O NHibernate é um framework para mapeamento objeto-relacional com uma grande aceitação no mercado. Objetos de bancos de dados são mapeados para acesso através do mesmo via arquivos XML de configuração. Já o Fluent NHibernate nada mais é do que uma extensão do NHibernate, contendo classes próprias que dispensam a escrita de arquivos de configuração; a vantagem disto está na capacidade de evitar erros de mapeamento em tempo de compilação, algo que seria impraticável utilizando-se XML.

Considerando as características de sistemas voltados à realização de análises mais detalhadas e que empreguem gráficos, é comum que softwares deste tipo contem com bases que foram separadas daquelas utilizadas em sistemas para processamento de transações rotineiras. Isso se deve ao alto desempenho requerido por soluções de cunho operacional, com a performance sendo muitas vezes um fator crítico ao considerar as atividades cotidianas da organização.

Diante do exposto, os bancos de dados voltados à obtenção de informações e gráficos analíticos fazem um uso intensivo de índices para otimizar o plano de execução das consultas envolvidas. Operações de escrita ocorrerão apenas durante atividades de carga de dados, processo este conhecido como ETL (sigla do inglês “Extraction, Transformation and Load”): a partir de um repositório de origem serão extraídos dados, com os mesmos sendo transformados seguindo critérios específicos a um determinado contexto. E por fim, carregados na base de destino. Soluções próprias de ETL podem vir a ser desenvolvidas, muito embora existam ferramentas práticas e bastante flexíveis como o SQL Server Integration Services.

Nota do DevMan

O Integration Services é um componente do SQL Server que permite a construção de soluções para a manipulação de dados, empregando workflows. A partir do mesmo é possível integrar bancos de dados relacionais dos mais variados tipos, sendo que esta solução não está restrita apenas ao SQL Server da Microsoft (uma base Oracle pode ser normalmente utilizada, fazendo uso de um driver OLE DB ou ADO.NET).

Informações procedentes de arquivos texto, XML ou do Excel e até mesmo, de Web Services também podem ser manipuladas. É possível ainda escrever módulos dentro de uma solução empregando alguma linguagem compatível com a plataforma .NET (C#, por exemplo).

O controle Chart é um tipo de objeto composto, sendo formado ainda por outras partes que equivalem aos diferentes elementos que formam um gráfico e que são representadas pelas seguintes propriedades:

· ChartAreas: coleção de objetos do tipo ChartArea, o qual representa a área de plotagem de um gráfico;

· Legends: coleção de referências da classe Legend, que determina a existência de legendas dentro de um gráfico;

· Titles: coleção de objetos do tipo Title, que corresponde ao título que será exibido em um gráfico;

· Series: coleção de instâncias da classe Series; essa estrutura representa uma série de dados de um gráfico e define ainda sua aparência (“pizza”, barras, colunas, acontecendo por meio da atribuição de um dos valores do enumeration SeriesChartType à propriedade ChartType). É possível que um gráfico conte com mais de uma série de dados, com cada um destes elementos constando numa mesma área de plotagem (servindo inclusive de base para comparações visuais).

Na Tabela 1 encontram-se listados alguns dos principais métodos que podem ser utilizados para a geração e a manipulação de gráficos a partir do controle Chart. Já na Tabela 2 constam alguns dos valores possíveis para o enumeration SeriesChartType, com tais elementos representando alguns dos diferentes tipos de gráficos suportados pelo componente Chart.

Método

Função

DataBind

Vincula um gráfico a uma fonte de dados que foi especificada anteriormente em sua propriedade DataSource, gerando a visualização do mesmo.

DataBindCrossTable

Similar ao método DataBind. Permite a realização de gráficos envolvendo referências cruzadas, com duas dimensões servindo como parâmetros para o agrupamento de valores dentro do gráfico (normalmente um gráfico é formado por um eixo em que consta um atributo/característica, com o segundo eixo sendo constituído pelos valores associados às variações dos itens do primeiro eixo).

SaveImage

Permite que a visualização gerada para um gráfico seja salva em um arquivo de imagem ou ainda, em memória (fazendo uso de um Stream, conforme detalhado mais adiante neste artigo). Para a criação de imagens este método pode utilizar ainda o enumeration ChartImageFormat, com este disponibilizando itens que correspondem aos diferentes tipos de imagem suportados pelo componente Chart (já citado anteriormente).

Tabela 1. Alguns métodos do componente Chart

...

Item

Descrição

Bar

Corresponde a um gráfico de barras

Column

Representa um gráfico em que os diferentes elementos são dispostos em colunas.

Doughnut

Quer ler esse conteúdo completo? Tenha acesso completo