Delphi中的图形显示技巧[3]
雨滴效果
原理 将暂存图形的最后一条扫描线 依序搬移到可视位图的第一条到最后一条扫描线 让此条扫描线在屏幕上留下它的轨迹 接着再把暂存图形的倒数第二条扫描线 依序搬移到可视位图的第一条到倒数第二条扫描线 其余的扫描线依此类推
程序算法 procedure TForm Button Click(Sender: TObject); var newbmp:TBitmap; i j bmpheight bmpwidth:integer; begin newbmp:= TBitmap Create; newbmp Width:=image Width; newbmp Height:=image Height; bmpheight:=image Height; bmpwidth:=image Width; for i:=bmpheight downto do for j:= to i do begin newbmp Canvas CopyRect(Rect( j bmpwidth j) image Canvas Rect( i bmpwidth i)); form Canvas Draw( newbmp); end; newbmp free; end;
百叶窗效果
原理 将放在暂存图形的数据分成若干组 然后依次从第一组到最后一组搬移 第一次每组各搬移第一条扫描线到可视位图的相应位置 第二次搬移第二条扫描线 接着搬移第三条 第四条扫描线
程序算法 procedure TForm Button Click(Sender: TObject); var newbmp:TBitmap; i j bmpheight bmpwidth:integer; xgroup xcount:integer; begin newbmp:= TBitmap Create; newbmp Width:=image Width; newbmp Height:=image Height; bmpheight:=image Height; bmpwidth:=image Width; xgroup:= ; xcount:=bmpheight div xgroup; for i:= to xcount do for j:= to xgroup do begin newbmp Canvas CopyRect(Rect ( xcount*j+i bmpwidth xcount*j+i) image Canvas Rect( xcount*j+i bmpwidth xcount*j+i)); form Canvas Draw( newbmp); end; newbmp Free; end;
积木效果
原理 是雨滴效果的一种变化 不同之处在于 积木效果每次搬移的是一块图形 而不只是一根扫描线
程序算法 procedure TForm Button Click(Sender: TObject); var newbmp:TBitmap; i j bmpheight bmpwidth:integer; begin newbmp:= TBitmap Create; newbmp Width:=image Width; newbmp Height:=image Height; bmpheight:=image Height; bmpwidth:=image Width; i:=bmpheight; while i> do begin for j:= to i do begin newbmp Canvas CopyRect(Rect( j bmpwidth j) image Canvas Rect( i bmpwidth i)); form Canvas Draw( newbmp); end; i:=i ; end; newbmp free; end;
结束语 上述图形显示效果均已上机通过 软件环境Delphi 硬件环境Pentium M兼容机 使用效果很好
lishixinzhi/Article/program/Delphi/201311/25001