Gráficos GDI+ em Visual Basic .NET
(Imagens de heróis/Imagens Getty)
GDI+ é a maneira de desenhar formas, fontes, imagens ou geralmente qualquer coisa gráfica em Visual básico .INTERNET.
Este artigo é a primeira parte de uma introdução completa ao uso de GDI+ no Visual Basic .NET.
GDI+ é uma parte incomum do .NET. Estava aqui antes do .NET (GDI+ ser lançado com o Windows XP) e não compartilha os mesmos ciclos de atualização do .NET Framework. A documentação da Microsoft geralmente afirma que o Microsoft Windows GDI+ é uma API paraC/C++programadores no sistema operacional Windows. Mas GDI+ também inclui o namespaces usados no VB.NET para programação gráfica baseada em software.
WPF
Mas não é o só software gráfico fornecido pela Microsoft, especialmente desde o Framework 3.0. Quando o Vista e o 3.0 foram introduzidos, o WPF totalmente novo foi introduzido com ele. O WPF é uma abordagem de gráficos acelerados por hardware de alto nível. Como diz Tim Cahill, membro da equipe de software do Microsoft WPF, com o WPF 'você descreve sua cena usando construções de alto nível, e nós nos preocupamos com o resto'. E o fato de ser acelerado por hardware significa que você não precisa arrastar para baixo a operação do processador do seu PC desenhando formas na tela. Grande parte do trabalho real é feito pela sua placa gráfica.
Já estivemos aqui antes, no entanto. Cada 'grande salto para frente' geralmente é acompanhado por alguns tropeços para trás e, além disso, levará anos para o WPF percorrer os zilhões de bytes de código GDI+. Isso é especialmente verdade porque o WPF quase assume que você está trabalhando com um sistema de alta potência com muita memória e uma placa gráfica quente. É por isso que muitos PCs não podiam rodar o Vista (ou pelo menos, usar os gráficos do Vista 'Aero') quando foi lançado pela primeira vez. Portanto, esta série continua disponível no site para todos que continuarem a precisar usá-la.
Código bom e velho
GDI+ não é algo que você pode arrastar para um formulário como outros componentes em VB.NET. Em vez disso, os objetos GDI+ geralmente precisam ser adicionados da maneira antiga - codificando-os do zero! (Embora o VB .NET inclua vários trechos de código muito úteis que podem realmente ajudá-lo.)
Para codificar GDI+, você usa objetos e seus membros de vários namespaces .NET. (Atualmente, esses são apenas códigos de wrapper para objetos do sistema operacional Windows que realmente fazem o trabalho.)
Namespaces
Os namespaces em GDI+ são:
Sistema.Desenho
Isto é a núcleo GDI+ namespace. Ele define objetos para renderização básica ( fontes , canetas, pincéis básicos, etc.) e o objeto mais importante: Gráficos. Veremos mais disso em apenas alguns parágrafos.
System.Drawing.Drawing2D
Isso fornece objetos para gráficos vetoriais bidimensionais mais avançados. Alguns deles são pincéis de gradiente, tampas de caneta e transformações geométricas.
Sistema.Desenho.Imagem
Se você deseja alterar as imagens gráficas - ou seja, alterar a paleta, extrair metadados da imagem, manipular meta-arquivos e assim por diante - este é o que você precisa.
Sistema.Desenho.Impressão
Para renderizar imagens na página impressa, interagir com a própria impressora e formatar a aparência geral de um trabalho de impressão, use os objetos aqui.
Sistema.Desenho.Texto
Você pode usar coleções de fontes com esse namespace.
Objeto gráfico
O lugar para começar com GDI+ é o Gráficos objeto. Embora as coisas que você desenha apareçam em seu monitor ou em uma impressora, o objeto Graphics é a 'tela' na qual você desenha.
Mas o objeto Graphics também é uma das primeiras fontes de confusão ao usar GDI+. O objeto Graphics está sempre associado a um determinado contexto do dispositivo . Assim, o primeiro problema que praticamente todo novo aluno do GDI+ enfrenta é: 'Como obtenho um objeto Graphics?'
Existem basicamente duas maneiras:
- Você pode usar o e parâmetro de evento que é passado para o OnPaint evento com o PaintEventArgs objeto. Vários eventos passam PaintEventArgs e você pode usar o para se referir ao objeto Graphics que já está sendo usado pelo contexto do dispositivo.
- Você pode usar o Criar gráficos método para um contexto de dispositivo para criar um objeto Graphics.
Aqui está um exemplo do primeiro método:
|_+_|Clique aqui para exibir a ilustração
Adicione isso à classe Form1 para um aplicativo Windows padrão para codificá-lo você mesmo.
Neste exemplo, um objeto Graphics já foi criado para o formulário Formulário 1 . Tudo o que seu código precisa fazer é criar uma instância local desse objeto e usá-la para desenhar no mesmo formulário. Observe que seu código Substituições a OnPaint método. É por isso MyBase.OnPaint(e) é executado no final. Você precisa ter certeza de que, se o objeto base (o que você está substituindo) estiver fazendo outra coisa, ele terá a chance de fazê-lo. Muitas vezes, seu código funciona sem isso, mas é uma boa ideia.
PaintEventArgs
Você também pode obter um objeto Graphics usando o PaintEventArgs objeto entregue ao seu código no OnPaint e Métodos OnPaintBackground de um formulário. o PrintPageEventArgs passou em um Imprimir página O evento conterá um objeto Graphics para impressão. É até possível obter um objeto Graphics para algumas imagens. Isso permite que você pinte diretamente na imagem da mesma forma que pintaria em um formulário ou componente.
Manipulador de eventos
Outra variação do método um é adicionar um manipulador de eventos para o Pintar evento para o formulário. Veja como esse código se parece:
|_+_|Criar gráficos
O segundo método para obter um objeto Graphics para seu código usa um Criar gráficos método que está disponível com muitos componentes. O código fica assim:
|_+_|Existem algumas diferenças aqui. Isso está no Botão1.Clique evento porque quando Formulário 1 se repinta no Carregar evento, nossos gráficos são perdidos. Portanto, temos que adicioná-los em um evento posterior. Se você codificar isso, você notará que os gráficos são perdidos quando Formulário 1 tem que ser redesenhado. (Mimize e maximize novamente para ver isso.) Essa é uma grande vantagem de usar o primeiro método.
A maioria das referências recomenda usar o primeiro método, pois seus gráficos serão repintados automaticamente. GDI+ pode ser complicado!