使用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是新数据计算出来的新点的值。
请各位大侠帮帮我吧。或者有其他可好的方法??
我每次画线调用的代码如下:
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;
选择Image我也考虑和试用了很多次。关键是画出的图形里还有缩放,画游标,Image多次画图等。好,我重新考虑直接用Canvas做下。其实以前也做过的。再试看看 ,谢谢了
留下联系,可以请教你
我的油箱:[email protected]
你内部创建一个TBitmap,大小就是显示器的大小就可以了,有了数据先在上面画好,
然后在界面的画布上一次贴出来.
http://blog.csdn.net/zyxip/article/details/1546379
用双缓冲实现图形的移动