terça-feira, 24 de julho de 2012

Exemplo de Aplicação para dar um Zoom na Tela


Imaginem criar uma aplicação que possibilite "darmos" um zoom por onde o mouse passar. A idéia é passarmos o mouse em um determinado local da tela e ampliar a mesma. Com Delphi podemos fazer isso facilmente. Para demonstrarmos essa facilidade vamos criar uma aplicação exemplo, e detalharmos passo-a-passo como executar o zoom por onde o mouse passar. A imagem abaixo demonstra como deve ficar a interface gráfica da aplicação de exemplo.













Vamos ao código fonte do botão Click Here
// variaveis
var Srect,Drect,PosForme:TRect;
iWidth,iHeight,DmX,DmY:Integer;
iTmpX,iTmpY:Real;
C:TCanvas;
hDesktop: Hwnd;
Kursor:TPoint;

// Ampliar a tela se esse aplicativo não for um icone
If not IsIconic(Application.Handle) then begin

// Pega as coordenadas do mouse
GetCursorPos(Kursor);
hDesktop:= GetDesktopWindow;
// PosForm representa um retangulo com as coordenadas
// Form (image control) coordenadas
PosForme:=Rect(Form1.Left,
Form1.Top,
Form1.Left+Form1.Width,
Form1.Top+Form1.Height);

//Mostra a tela ampliada
//se o cursor do mouse sair do form
If not PtInRect(PosForme,Kursor) then begin
// O codigo abaixo para ampliar o que estiver selecionado a parte da tela que estiver selecionada
iWidth:=Image1.Width;
iHeight:=Image1.Height;
Drect:=Bounds(0,0,iWidth,iHeight);
iTmpX:=iWidth / (Slider.Position * 4);
iTmpY:=iHeight / (Slider.Position * 4);
Srect:=
Rect(Kursor.x,Kursor.y,Kursor.x,Kursor.y);
InflateRect(Srect,Round(iTmpX),Round(iTmpY));
//recebe a "alça de janela" (handle) do form
C:=TCanvas.Create;
try
C.Handle:=GetDC(GetDesktopWindow);
//Transfere a parte da imagem da tela para o TImage
Image1.Canvas.CopyRect(Drect,C,Srect);
finally
ReleaseDC(hDesktop, C.Handle);
C.Free;
end;
end;

// Garantir de processar todas as mensagens do windows
Application.ProcessMessages;
end;
É obvio que devemos aumentar a parte gráfica da aplicação para podermos visualizar melhor a parte da tela que esta sendo ampliada. Fica a dica, de mais uma funcionalidade que podemos disponibilizar em nosso sistemas.

Nenhum comentário:

Postar um comentário