2010-01-18 119 views
1

製作縮略圖視圖最簡單的方法是什麼?您有一個垂直滾動條的面板,以及描述其相關圖像的圖像矩陣?我也喜歡這樣,如果父框架水平調整大小,矩陣將縮小到所需的列數,以顯示沒有水平滾動條的縮略圖。我希望能夠拖動和重新排列這些縮略圖。這寫的工具包並不重要。如果你知道使用MFC的好方法,那很酷,Delphi/C++ builder也非常酷。只是某種本地應用程序框架。Windows縮略圖/幀視圖

哇,這聽起來很像我懇求功課的幫助。我發誓,這是一些軟件來驅動激光投影儀。

回答

3

TMS AdvSmoothImageListBox看看:

alt text

據我所知,註冊德爾福的客戶可以下載TMS平滑組件從Embarcadero公司的網站上免費。如果您不是德爾福的註冊用戶,那麼您可以從TMS網站購買該系列。

+0

我想我更感興趣的是一個如何構建這樣的事情,而不是如何找到組件本身。 – Evan 2010-01-18 11:16:41

+0

我最近遇到了代碼(Delphi)這樣做。在http://rmklever.com/上查找「Threaded thumbnails demo」。 – 2010-01-18 13:47:56

+0

太棒了!這或多或少是我正在尋找的......現在我只需要弄清楚如何進行拖放操作...... – Evan 2010-01-18 21:34:39

0

這裏是摘錄的代碼,我用來顯示一個變量的集合numImages網絡攝像頭的數量。

const MaxImages = 24; 

type 
TForm1 = class(TForm) 
    ... 
    images: array[1..MaxImages] of TWebcamImage; 
    numImages: integer; 
    .... 
end; 

TWebCamImageTImage與像攝像頭的源URL,文件名的保存的圖片,併爲雙擊在二級面板中打開圖片的處理一些附加屬性的後裔。

以下是用於在面板中排列圖像的代碼。

procedure TForm1.ArrangeImages; 
var i, numh, numv : integer; 
const margin=2; 
begin 
    case numImages of 
    1: begin numh:=1; numv:=1; end; 
    2: begin numh:=2; numv:=1; end; 
    3: begin numh:=3; numv:=1; end; 
    4: begin numh:=2; numv:=2; end; 
    5,6: begin numh:=3; numv:=2; end; 
    7,8: begin numh:=4; numv:=2; end; 
    9: begin numh:=3; numv:=3; end; 
    10: begin numh:=5; numv:=2; end; 
    11,12: begin numh:=4; numv:=3; end; 
    13,14,15: begin numh:=5; numv:=3; end; 
    16: begin numh:=4; numv:=4; end; 
    17,18,19,20: begin numh:=5; numv:=4; end; 
    else begin numh:=6; numv:=4; end; 
    end; 
    for i:=1 to numImages do 
    begin 
    images[i].Width := (panel2.Width div numh) - margin * 2; 
    images[i].Height := (panel2.Height div numv) - margin * 2; 
    images[i].Top := (((i-1) div numh) * (panel2.Height div numv)) + margin; 
    images[i].Left := (((i-1) mod numh) * (panel2.Width div numh)) + margin; 
    end; 
end; 

調用此方法的形式的初始化,鉤掛在oncreate事件和事件onresize

procedure TForm1.FormCreate(Sender: TObject); 
begin 
    ... 
    numImages:=0; 
    for i:=1 to maxImages do 
    begin 
    imageURL:=ini.ReadString('images','imageURL'+intToStr(i),imageURLDefault); 
    if imageURL<>'' then 
     begin 
     inc(numimages); 
     images[numImages]:=TWebCamImage.create(self,panel2,imageURL); 
     end; 
    .... 
    end; 
    .... 
    ArrangeImages; 
    .... 
end; 

procedure TForm1.FormResize(Sender: TObject); 
begin 
    ArrangeImages; 
end; 
0

我不太確定我是否理解你的意思,但是我會先拿着一張圖片,它是描述。然後我會使用一個TFlowPanel來保存框架的實例。我認爲,實施拖放應該不需要太多的工作。雖然從未嘗試過。

如果有很多圖像,我認爲你應該去尋找一個擁有者和雙緩衝解決方案。

最後,你應該剛剛降的激光投影組件,並把它掛到激光投影機轉向單元...