这个界面控件如何实现?请大家给出思路 ( 积分: 100 )

  • 主题发起人 主题发起人 songbo_pp
  • 开始时间 开始时间
S

songbo_pp

Unregistered / Unconfirmed
GUEST, unregistred user!
运行情景:在画板中部产生一个小方形,然后再产生第二个方形,嵌套小方形,依次,一层一层向外展开,直到产生最外层的大方形。同样的方法,再从大方形回到里面的小方形。


功能:抽象为可视化控件

属性:
外观方面属性:容器的大小、位置、背景色和背景图等;
方框类型:实现的类型有菱形、矩形、圆形;
方框颜色:;
时间间隔:产生下一个方框的等待时间;
执行次数:从最中间的小方框到最外沿的大方框再回到小方框为一次;
方框间距:以像素来计算;
声音:弹出方框的声音;

方法:
启动和停止:
 
运行情景:在画板中部产生一个小方形,然后再产生第二个方形,嵌套小方形,依次,一层一层向外展开,直到产生最外层的大方形。同样的方法,再从大方形回到里面的小方形。


功能:抽象为可视化控件

属性:
外观方面属性:容器的大小、位置、背景色和背景图等;
方框类型:实现的类型有菱形、矩形、圆形;
方框颜色:;
时间间隔:产生下一个方框的等待时间;
执行次数:从最中间的小方框到最外沿的大方框再回到小方框为一次;
方框间距:以像素来计算;
声音:弹出方框的声音;

方法:
启动和停止:
 
从小方框到大方框是可以实现的,通过计算间距,逐层画上,关键是如何把大方框一层层去掉,就是把已经画了的方框怎么隐藏掉,这里是怎么控制的,不太好实现。是不是生成方框对象,这个对象支持显示和隐藏方法,不知这样是否可以。
 
怎么没人理我?可能我的问题太多了,简单一些,有没有做图形控件的资料,共享以下
 
procedure TForm1.Button3Click(Sender: TObject);
var
x, y: integer;
x1, y1, x2, y2: integer;
nindex, nMaxindex: integer;
nWait: integer;
index, lastIndex: integer;
Step: integer;
begin
SetROP2(Canvas.Handle, R2_NOT);//与当前颜色相反
canvas.Brush.Style := bsClear;
Canvas.Pen.Mode := pmNotXor; //画两次就清除

x := trunc(width / 2);
y := trunc(height / 2);

Step := 20; //方框间距
index := 1;
lastindex := trunc((width - x) / step);
nWait := 30; //时间间隔
nMaxindex := 100; //执行次数
nindex := 1;

repeat
index := 1;
lastindex := trunc((width - x) / step);
repeat
x1 := x - trunc(index * Step);
y1 := y - trunc(index * Step);
x2 := x + trunc(index * Step);
y2 := y + trunc(index * Step);
canvas.Rectangle(x1, y1, x2, y2);
sleep(nwait);
inc(index);
until index > lastIndex;

index := 1;
repeat
x1 := x - trunc(lastIndex * Step);
y1 := y - trunc(lastIndex * Step);
x2 := x + trunc(lastIndex * Step);
y2 := y + trunc(lastIndex * Step);
canvas.Rectangle(x1, y1, x2, y2);
sleep(nwait);
dec(lastIndex);
until index > lastIndex;

inc(nIndex);
until nindex > nMaxindex;

end;
看对你有没有帮助!
 
接受答案了.
 
后退
顶部