terça-feira, 22 de setembro de 2009

Como vazar um form usando letras

Procedure TForm1.FormPaint(sender: TObject);
var
r : hrgn;
begin
// para pintar em qualquer lugar use GetWindowDC e passe o
// handle do local a ser pintado.
with canvas do begin
Handle := GetWindowDC(Form1.handle);
SetBkMode(handle,TRANSPARENT);
SetPolyFillMode(handle,WINDING);
// marca o inicio do "molde"
BeginPath(handle);
// escreve com a fonte, tamanho e estilo do local a ser pintado
// caso queira mudar a fonte use (neste caso estamos pintando no form)
// Form1.font.name := 'Arial'; //nome da fonte desejada
// Form1.font.size := 36;
// Form1.font.color := clBlue; // cor desejada
TextOut(10,100,'Delphi');
// A área de pintura deve ser a área original do componente ou
// form, se passar não vai aparecer.
EndPath(handle); // fim do "molde"
// A diferença vem agora, trasformamos o path em região e
// trabalhamos como em uma imagem.
r := PathToRegion(Canvas.handle);
FillPath(handle);
// Agora podemos "recortar" o form
// a janela fica na forma do que foi escrito.
SetWindowRGN(Form1.handle,r,true);
// lembre-se de colocar meios de se fechar a janela, já que o botão // fechar também será destruido. o alt+tab continua ativando o // menu do sistema.
end; // fim do with

end;

Nenhum comentário:

Postar um comentário