你用什么方法来显示的?
最好用双缓冲的方法!BitBlt就可以了。

解决方案 »

  1.   

    to Kingron(戒网中……):
    我是将以下的代码放在一线程中运行,可是速度不快。你有什么好的建议(最好有代码说明)
    l_row := 10;
    l_col := 10;
    for j := 0 to l_row do
    begin
        for i := 1 to l_col do
        begin
            image := TImage.create(nil);
            image.parent := panel1;
            image.width := 10;
            image.height := 10;
            image.left := (i - 1) * 10;
            image.top := j * 10;
            image.picture.Assign(image1.picture)
        end;
    end;
      

  2.   

    这样创建了太多的image,并且要频繁load和free picture,速度当然慢了。最快的方法还是建立一个类似paintbox的画布canvas对象,然后可以定义一个imagelist,存放cell的不同状态图标,需要显示的时候直接
    for ....
    begin
      判断状态
      imagelist.draw(x,y,状态对应图标index);
    end;
      

  3.   


    procedure TForm1.FormPaint(Sender: TObject);
    var i,j,it,jt:integer;
    begin
       i:=round(width/image1.Width);
       j:=round(height/image1.Height);
       for it:=1 to i do
       begin
         for jt:=1 to j do
           canvas.Draw((it-1)*image1.width,(jt-1)*image1.height,image1.Picture.Bitmap);
         begin
         end;
       end;end;好像速度并不是挺慢,可以试试噢。
      

  4.   

    to Adnil(IT闲人):
    能否说的详细点,如何建立paintbox的Canvas,以及如何与imagelist关联。
    我对这不是很熟悉,请给点具体的代码,谢谢!
      

  5.   

    to qiaoda_ly(阿民) 
    我用了你的代码,怎么看不出效果。大家有什么快速的方法,请说说。别只讨论一半
      

  6.   

    paintbox是一个TGraphicControl对象,Canvas属性是可见的,ImageList提供了Draw Image至Canvas的功能,其实用Image也可以,但考虑到通常这样的应用都是一组图片,因此用Imagelist更加方便。
      

  7.   

    如果要速度更加快,可以考虑使用windows api中的bitblt函数To:dana(dana)
    图形函数在一个hdc上绘图可能速度更加慢吧?复杂性也上升了一个数量级。