用双缓冲区画多条线的图像怎么这么慢哟?
使用delphi的Image控件,采用双缓冲区画图形,每条曲线的颜色不一样,画图的时候好慢哟。各位同仁有没有可行的快速的方法,帮帮小妹吧。线条大概有30条吧。
我每次画线调用的代码如下:
Mypen.lopnclolor:=对应的线条颜色;
Ppen:=createpenIndirect(Mypen);
Selectobject(MemDC,Ppen);
MoveToEX(MemDC,x1,y1,nil);
LineTo(MemDC,x1-1,y1-1);
x1:=x1-1;
y1:=y1-1;
DeleteObject(Ppen);
其中x1,y1是上一个点的值,x1-1,y1-1是新数据计算出来的新点的值。
请各位大侠帮帮我吧。或者有其他可好的方法??
[解决办法]
第一:
Image 图象的意思,明显它是用来处理图象更合适,
PaintBox 绘制容器,明显它是用来自己绘图的
因此可以看出在选择控件上有问题
第二:
Delphi已经封装好了的Canvas不用,而选择API,关键是你选择API也不是这么用的吧
每画一条线都要Create,Select,Delete,当然慢了,
用Image时,看看这个代码,效率肯定没PaintBox快
var
i , X , Y , Color : integer;
begin
Color := $000000;
for X:=0 to Image1.Width-1 do begin
Image1.Canvas.Pen.Color := Color;
for Y:=0 to Image1.Height-1 do begin
Image1.Canvas.MoveTo(X , Y);
Image1.Canvas.LineTo(Image1.Width , Y);
end;
Color := Color + $010101;
end;
end;