常见到,一些程序利用线条的快速绘制显示缤纷的效果,(屏保或winamp的音乐效果图),我有这样的代码,(以前dos时代的东西)到win下却死机,为什么?(50分

  • 主题发起人 主题发起人 魏启明
  • 开始时间 开始时间

魏启明

Unregistered / Unconfirmed
GUEST, unregistred user!
常见到,一些程序利用线条的快速绘制显示缤纷的效果,(屏保或winamp的音乐效果图),我有这样的代码,(以前dos时代的东西)到win下却死机,为什么?(50分)<br />var
x,y,r,p,c,b:integer;
const
pi=3.14159;
//放在死循环里
while …… do
begin
x:=round(r*cos(2*pi*p/360)+319);
y:=round(0.8*r*sin(2*pi*p/360)+239);
with Canvas do
begin
brush.Color:=C;
Moveto(319,239);
lineto(x,y);
ellipse(x,y,x,y);
end;
if r=240 then b:=1;
if b=1 then r:=r-1;
if b=0 then r:=r+1;
if r=10 then b:=0;
if (r=10) or (r=240) then c:=c+1;
if c>15 then c:=1;
p:=p+7;
end;
end;
 
在循环最后加上Application.ProcessMessage;
另外,不要用死循环,不然程序只能强制退出.
设一个全局变量 var Quit:boolean;
在Form.OnCreate里加上Quit:=false;
Form.OnClose里加上Quit:=true;
循环用
repeat
...
until Quit;
 
接受答案了.
 
后退
顶部