De que se trata o artigo

Este artigo demonstra que é possível criar alguns efeitos visuais de uma maneira bem simples para serem utilizados em aplicações desktop utilizando a VCL sem ter que recorrer a outras tecnologias.


Em que situação o tema é útil

Permite que o desenvolvedor personalize sua aplicação, saindo um pouco da tradicional e comportada interface gráfica de sempre dos formulários e seus componentes, criando efeitos, mensagens e aplicando skins. Este tema é bastante útil para quem quer alterar o estilo visual da sua aplicação e não tem ideia de como fazer ou por onde começar, bem como dá algumas noções para que o usuário possa desenvolver seus próprios efeitos e aplicar skins em outros componentes.

Efeitos Gráficos

A qualidade de software é um tema hoje muito comum, e todas as empresas têm buscado aprender técnicas para obter essa melhoria. Qualidade é indiscutível, todo software precisa ter. Por ser um ponto comum, e assumindo que as aplicações a possuem, o que pode diferenciar o seu sistema em relação ao do concorrente? Recursos e funcionalidades. E se ambos forem “parecidos”? Com certeza será a experiência do usuário e sua aparência o diferencial. Neste artigo vamos explorar o quesito aparência e mostrar como personalizar a interface de aplicações sem utilizar biblioteca de terceiros.

Autores: Jederson Zuchi e Giuliano Scombatti Pinto

Atualmente com a popularização de diversas tecnologias que permitem criar aplicações desktop com efeitos gráficos e animações, como a WPF (Windows Presentation Foundation) e a Adobe AIR, é comum recorrer a tais ferramentas quando se faz necessário o desenvolvimento de uma aplicação multimídia ou simplesmente para deixar uma aplicação com um “ar mais amigável” e fugir dos seus tradicionais e simples efeitos. Porém, vale a pena ressaltar que é possível desenvolver com Delphi funções e procedimentos, simples ou complexos, voltados para criar efeitos gráficos que poderão ser utilizados em toda a aplicação, em seus formulários e componentes. Efeitos que possam incrementar e até mesmo competir com as tecnologias descritas anteriormente. Também é importante falar da OpenGL, disponível inclusive para o Delphi, que permite incrementar ainda mais o ambiente gráfico da aplicação, disponibilizando assim a criação de objetos, efeitos ou cenas em 3D na mesma.

Talvez você não saiba, mas uma nova API gráfica foi adicionada no Windows 7. Esta nova API é chamada de Direct2D, para desenvolvimento de gráficos 2D no Windows 7. Seu objetivo é substituir as antigas APIs GDI e GDI+ que são mais lentas. O GDI, ou Graphics Device Interface, é um dos três subsistemas principais do Microsoft Windows. É um padrão desse sistema operacional para representar objetos gráficos e transmiti-los para dispositivos de saída, como monitores e impressoras. É responsável por tarefas como desenhar linhas, curvas e fontes, providenciando todo um API específico para a execução dessas operações. No Delphi a classe TCanvas é responsável por consumir esses recursos da API. A GDI+ é a sucessora da GDI, foi introduzida no Windows XP e trouxe grandes melhorias, como antialiasing de gráficos 2D, criação de gradientes e suporte muito melhor aos formatos de imagem como o JPEG e o PNG (inclusive foi na GDI+ que ocorreu a famosa falha que poderia fazer com que a exibição de uma simples imagem JPEG na internet permitisse a instalação de um malware no sistema afetado). Hoje a GDI e a GDI+ são responsáveis pelos efeitos 2D do Windows. A GDI + trouxe melhorias nas transparências e isso pode ser visto na interface do Windows XP. Porém continuamos a ter alguns problemas como falta de recursos mais avançados e desempenho uma vez que a GDI não é acelerada pela GPU.

A função AnimateWindow

Através do uso da função AnimateWindow, presente na Unit Windows, é possível criar um simples efeito gráfico animado quando uma janela (formulário) é exibida ou ocultada, podendo conter os efeitos de rolar, deslizar, contrair, expandir ou de transparência. Para utilizar esta função, além de adicionar a Unit Windows, é necessário informar um “handle”, que permite que uma janela ou um dispositivo de contexto seja referenciado por uma aplicação Windows e posteriormente informar qual o efeito desejado, bem como sua duração.

O evento OnCreate é executado no momento em que um formulário é criado, sendo assim, basta adicionar a função AnimateWindow com seus parâmetros neste evento para criar um efeito de exibição. Se o desenvolvedor preferir, pode adicionar o mesmo no evento OnShow, executado quando o formulário for exibido. Para criar um efeito no momento em que o formulário for fechado pode-se utilizar o evento OnClose.

Nota do DevMan

O sistema operacional Windows possui vários objetos visuais, podem – e são – instanciados pelos mais diversos aplicativos para exibir informações. Mesmo em Delphi estamos instanciando objetos do Windows. Por exemplo, controles que herdam de TWinControl encapsulam em si com controle do sistema operacional. Mas como o Windows identifica todos esses objetos durante sua execução? Esses controles possuem um identificador chamado Handle. Ele é utilizado para essa finalidade.

Sintaxe da função AnimateWindow

A sintaxe da função AnimateWindow() é a seguinte: function AnimateWindow(HWND: Handle, dwTime: DWORD, dwFlags: DWORD ) : Boolean. A Tabela 1 mostra detalhadamente para que serve cada um dos parâmetros da função:

Parâmetro

Descrição

HWND: Handle

Handle do formulário que será animado, exemplo: TForm1.Handle.

DWTIME: DWORD

O tempo em milisegundos que a animação vai durar.

FLAGS: DWORD

O tipo da animação.

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