首先声明,这段代码是我研究XP毛玻璃效果窗口(呃,主要是闲得无聊)的副产品,使用了相同的原理。秉承本人一贯的all in one file的习惯, 所有相关代码都抠出来放在一个unit里了,如果你想看看源代码中到底是怎么回事,建议你察看TClosingEffectWnd.Render; 主要逻辑都在里面。同样属于本人的习惯:该特效使用起来非常简单,比如:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
id: Cardinal;
begin
id := BeginGrayscaleClosingEffect(Handle);
if MessageBox(Handle, 'Quit now?', 'Quit', MB_OKCANCEL or MB_ICONQUESTION) = IDOK then
EndGrayscaleClosingEffect(id)
else begin
EndGrayscaleClosingEffect(id, True);
Action := caNone;
end;
end;
效果见图:
原始窗口效果:
http://rossfw.blu.livefilestore.com/y1pE_gbqa33q6iBkyAJpdRd-VnqmX22A0LyrG4_7k2Tqqwn5v2Gxu9L_YdwuD3tQWIPZVA1epvv6Ya3oZnGMf82RcBPPzqiSob8/1.JPG
当点击关闭按钮时效果:
http://rossfw.blu.livefilestore.com/y1pcJFswPfoiSC-jyEGrlNDtLoUU-xS0aFhEyoUSIHA7ANMFjJNcX5x56V9a51skAoNmLptgtwutVnSguC6nmCuqdZ39byA3BZi/2.JPG
另外,demo中unit1.pas中也奉送了一套画钟的代码。
源码下载地址:
http://download.csdn.net/source/1742415