Com a mão na massa
Como foram feitas as mãozinhas, no projeto da TILT disquete

Uma das coisas que mais chamou a atenção, no projeto da TILT disquete, foi a mão segurando um disco, que compõe a abertura do sistema. O que mais despertou a curiosidade do pessoal ligado na programação Delphi foi o fato das mãozinhas aparecerem sobre a tela desktop do Windows 95, como se fossem um grande ícone.

Se você nem sabe do que estamos falando, então baixe o pacote de programação, no final desta página e rode o programa. Neste exemplo, ao clicar sobre a mão, a placa de proteção do disquete irá abrir e fim. Só isso, afinal é um exemplo de como a mão funciona.

Esta criação, cuja obra e arte ficou a cargo no nosso "criador de artes" oficial, Bob Pixel, não é novidade para quem acompanhou os projetos da PRO KIT. Ela apareceu pela primeira vez nos discos Bitmap, no tempo que as placas VGA de 16 cores ainda eram as mais cotadas entre os usuários. Continuou sendo usada quando o projeto passou a valer-se das 256 cores.

Mas até esse ponto, o funcionamento de abertura do disquete era bem simples de ser feito. Na verdade, tudo não passava de uma tela sobreposta a outra. Nas versões para Windows e principalmente no projeto da TILT disquete a coisa se complicou um pouco. Foi preciso lançar mão de uns truquezinhos, que mostraremos agora. Preste atenção como as coisas se resolvem de uma maneira prá lá de original.

A idéia ainda é a mesma: apresentar uma mão segurando um disquete e, ao clicar sobre o mesmo, abrir a portinhola e executar o programa. Toda a nossa solução se baseia na função BitBlt, que já foi vista aqui na TILT online inúmeras vezes e na correta criação das imagens.

Partimos da figura acabada, como por exemplo a que se segue:


O primeiro passo é criar uma máscara para ela:


A seguir criamos a imagem da portinhola aberta, não esquecendo (neste caso) nem do arranhão que a unha irá provocar.

Essas figuras são gravadas como BMP e depois carregadas num formulário como TImages, com os respectivos nomes de Mao, Masc e Porta. Somente a porta deve estar com o atributo Visible setado como False.

O truque aqui é colocar a TImage da Mão nas coordenadas 0,0 do Form1. Isso é fundamental, pois a portinhola, apesar de invisível, deverá estar exatamente na sua posição final e "sobre" a TImage Mão.

No evento OnCreate do Form1 escrevemos o seguinte código:

  var
    Tela,Fig1,Fig2: HBitmap;
  begin
    //Fazemos o Form1 do tamanho da figura da mão
    Form1.Width:= Mao.Width; Form1.Height:= Mao.Height;
    //Na lateral esquerda da tela
    Form1.Left:= 0;
    //Na metade da altura
    Form1.Top:= (Screen.Height - Mao.Height) div 2;
    //Criamos um handle para a tela
    Tela:= CreateDc('Display',nil,nil,nil);
    //Criamos um handle para a mão
    Fig1:= Mao.Canvas.Handle;
    //Criamos um handle para a máscara
    Fig2:= Masc.Canvas.Handle;
    //Montamos na máscara uma imagem do que será salvo da tela
    BitBlt(Fig2,0,0,Mao.Width,Mao.Height,Tela,Form1.Left,
                                           Form1.Top,SRCAND);
    //Agora passamos tudo para a TImage Mao
    BitBlt(Fig1,0,0,Mao.Width,Mao.Height,Fig2,0,0,SRCPAINT);
    //Liberamos o handle da tela
    DeleteDc(Tela);
  end;

Pronto, com isso a mão irá aparecer como se fosse um grande ícone na tela do Windows. No evento OnMouseDown, da TImage Mao, colocamos o seguinte código:

  begin
  
  Porta.Visible:= True;
  end;

E para finalizar, no evento OnMouseUp colocamos o código de inicialização do nosso programa, que poderia ser aquele código normalmente colocado no evento OnCreate ou OnActivate, do Form1.

Viu como é simples sair fora da rotina do Windows? Não fizemos nenhum grande malabarismo e nosso programa ganhou um toque especial, que o diferencia da grande maioria dos programas que circulam por aí. Pense nisso quando for apresentar seu mais novo programa aos seus futuros "clientes".

Gostou? Clique no link abaixo para baixar o fonte completo desta matéria.


Download...
Clique no link para fazer o download dos arquivos. Se sua assinatura do club TILT está para vencer, clique aqui e saiba como renová-la.

Fontes completos do exemplo da matéria
 
online