首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

抖动的窗体?解决方案

2012-02-02 
抖动的窗体?谁能帮改一下代码,达到qq震动窗口的效果?procedure WindowShake(wHandle: THandle) constMAXD

抖动的窗体?
谁能帮改一下代码,达到qq震动窗口的效果?
procedure WindowShake(wHandle: THandle) ;
const
  MAXDELTA = 4;
  SHAKETIMES = 500;
var
  oRect, wRect :TRect;
  deltax : integer;
  deltay : integer;
  cnt : integer;
  dx, dy : integer;
begin
  //remember original position
  GetWindowRect(wHandle,wRect) ;
  oRect := wRect;

  Randomize;
  for cnt := 0 to SHAKETIMES do
  begin
  deltax := Round(Random(MAXDELTA)) ;
  deltay := Round(Random(MAXDELTA)) ;
  dx := Round(1 + Random(2)) ;
  if dx = 2 then dx := -1;
  dy := Round(1 + Random(2)) ;
  if dy = 2 then dy := -1;
  OffsetRect(wRect,dx * deltax, dy * deltay) ;
  MoveWindow(wHandle, wRect.Left,wRect.Top,wRect.Right - wRect.Left,wRect.Bottom - wRect.Top,true) ;
  end;
  //return to start position
  MoveWindow(wHandle, oRect.Left,oRect.Top,oRect.Right - oRect.Left,oRect.Bottom - oRect.Top,true) ;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
 WindowShake(Application.MainForm.Handle) ;
end;

感觉这个没有qq震屏的好看。

[解决办法]
以前我也尝试过写抖动效果,可是发现反应很慢,
如果能直接调用directx就会快很多

热点排行