界面的截图http://www.a4pocket.com/images/image-view.jpg
图片的来源是硬盘上的各种格式的图片文件。我考虑过用listview + imagelist,但imagelist只接受bmp格式。每次显示时都要进行格式转换效率太慢。

解决方案 »

  1.   

    建議去下載ImageSee源碼
    http://www.playicq.com/1/14472.html
      

  2.   

    ImageSee就是用了listview + imagelist,速度太慢,无法接受。
      

  3.   

    http://www.tonixsoft.com/index.php?mmenu_id=4&smenu_id=0005我这个全是自制的控件来显示的,不过速度也很成问题:)
      

  4.   

    to tonylk(=www.tonixsoft.com=):我大致要得就是这样的效果。你的TThumbFileView是自己实现的吗?我的问题主要是thumb应该放在哪个容器里,使得当容器改变宽度时,thumb大小不变,但每行显示的thumb数目会自动改变。
      

  5.   

    TImage+graphicex组件也应该能行,多个图片没试过
      

  6.   

    TThumbPanel = class(TPanel)
      private
        FCanvas:TCanvas;
        FImage:TImageIntf;
        FLabel:TLabel;
      ...
      end;  TThumbFileView = class(TObject)
      private
        FScrollBox:TScrollBox;
      ...
      end;procedure TThumbFileView.OnScrollBoxResize(Sender:TObject);
    var
      ThumbPos,ThumbPosTmp:TPoint;
      I:Integer;
      ThumbPanel:TThumbPanel;
    begin
      if FRowThumbCount<>(FScrollBox.Width div (Thumb_Width+10)) then begin
        LockWindowUpdate(FScrollBox.Handle);
        try
          FRowThumbCount:=(FScrollBox.Width div (Thumb_Width+10));
          ThumbPos.X:=10;
          ThumbPos.Y:=10;
          for I:=0 to FScrollBox.ControlCount-1 do begin
            if (FScrollBox.Controls[I] is TThumbPanel) then begin
              ThumbPanel:=TThumbPanel(FScrollBox.Controls[I]);
              ThumbPosTmp.X:=ThumbPos.X-FScrollBox.HorzScrollBar.Position;
              ThumbPosTmp.Y:=ThumbPos.Y-FScrollBox.VertScrollBar.Position;
              ThumbPanel.Left:=ThumbPosTmp.X;
              ThumbPanel.Top:=ThumbPosTmp.Y;
              inc(ThumbPos.X,Thumb_Width+10);
              if (ThumbPos.X>(FScrollBox.Width-Thumb_Width)) then begin
                ThumbPos.X:=10;
                Inc(ThumbPos.Y,Thumb_Height+10);
              end;
            end;
          end;
        finally
          LockWindowUpdate(0);
        end;
      end;
    end;也许对你有启发。。:)