delphi的canvas太慢怎么办

你这么写不慢才怪

不是canvas慢,你用的这个方法不是来做这个的.你可不要小看delphi vcl中封装的东西 canvas的Draw方法你觉得慢吗?

你不用将图像数据装载到流中,不划算因为图像数据已经在内存中了只要我们直接操作即可

给你写一个例子: (可不是复制粘贴的哦!)

var

imageP1,imageP2:^TColor;

i:integer;

begin

with Image1.Picture.Bitmap do

begin

PixelFormat:=pf32bit;

imageP1:=ScanLine[Height-1];

end;

with Image2.Picture.Bitmap do

begin

PixelFormat:=pf32bit;

imageP2:=ScanLine[Height-1];

end;

for i:= 0 to (Image2.Width * Image2.Height)-1 do

begin

if imageP2^ <> $FF00FF then

imageP1^:=imageP2^;

inc(imageP1);

inc(imageP2)

end;

image1.Refresh;

end;

达到的效果跟你上面的一样,前提是两个image图片宽高要相同,还有需要Bmp图片

但是速度绝对快比你那么写快NNNN倍

只要你懂得怎么用指针就可以将我给你的例子弄完美,要是想做图像处理相关的最好用指针,指针会很好的提高你程序的效率因为直接操作内存

vcl封装的的确很好但是很多菜鸟在不怎么了解Vcl原理的情况下胡乱使用,

比如在循环里面使用了某些可视控件的一个方法导致N次的不必要的重画(我笑!不慢才怪)所以delphi爱好者一定要在vcl中摄取营养终有一天你会发现delphi与VC是一个级别的