N
NoRose
Unregistered / Unconfirmed
GUEST, unregistred user!
我们现在有个很大的数据表,有256个字段,有1万多条,要求根据每个数据在一个背景图上画图,一个数据代表一个温度值,从0-950度,256个字段数据是整个图的宽度,用什么方法能比较快的将图型生成,我现在用的方法很慢,贴上源码:
procedure TForm1.Button2Click(Sender: TObject);
var i,j,k:integer;
begin
ibquery1.Close;
ibquery1.SQL.Clear;
ibquery1.SQL.Add('select * from nan4');
ibquery1.Open;
ibquery1.First;
i:=1;
while i<=500 do
begin
j:=1;
while j<=256 do
begin
k:=ibquery1.FieldValues['sum'+inttostr(j)];
if k>200 then
cximage1.Canvas.Pixels[501-i,j]:=(255-k div 3) or 0 or 0
else cximage1.Canvas.Pixels[501-i,j]:=0 or 0 or 0;
j:=j+1;
end;
i:=i+1;
ibquery1.Next;
end;
cximage1.Picture.SaveToFile('d:/nan1.bmp');
end;
另保存图片时是一个空白图片,不知道问题出在那,请教!!
需要比较快的显示,最好是能象上面的程序一样,能看见一条一条的在写图片,速度比较快一点的解决方法。
procedure TForm1.Button2Click(Sender: TObject);
var i,j,k:integer;
begin
ibquery1.Close;
ibquery1.SQL.Clear;
ibquery1.SQL.Add('select * from nan4');
ibquery1.Open;
ibquery1.First;
i:=1;
while i<=500 do
begin
j:=1;
while j<=256 do
begin
k:=ibquery1.FieldValues['sum'+inttostr(j)];
if k>200 then
cximage1.Canvas.Pixels[501-i,j]:=(255-k div 3) or 0 or 0
else cximage1.Canvas.Pixels[501-i,j]:=0 or 0 or 0;
j:=j+1;
end;
i:=i+1;
ibquery1.Next;
end;
cximage1.Picture.SaveToFile('d:/nan1.bmp');
end;
另保存图片时是一个空白图片,不知道问题出在那,请教!!
需要比较快的显示,最好是能象上面的程序一样,能看见一条一条的在写图片,速度比较快一点的解决方法。