全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2032
推到 Plurk!
推到 Facebook!

如何把目錄內的圖(jpg,bmp)秀在陣列圖板內?

尚未結案
samdb
一般會員


發表:9
回覆:10
積分:3
註冊:2004-05-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-01 18:27:27 IP:220.130.xxx.xxx 未訂閱
請教各位要如何把目錄內的圖(jpg,bmp)秀在陣列圖板內(有Scroll bar來挑圖)?在陣列圖上按一滑鼠左鍵就會在左下圖的地方呈現出大點的圖? 像stretch可以秀在陣列圖板內(如下),在下作的會因圖的size大小不同而重疊. 感謝.
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-01 18:54:40 IP:220.135.xxx.xxx 未訂閱
你好:    請問一下,跟這篇文章的問題什麼差別嗎? 【問題】秀出像陣列方式的圖  http://delphi.ktop.com.tw/topic.php?TOPIC_ID=58709
samdb
一般會員


發表:9
回覆:10
積分:3
註冊:2004-05-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-01 20:11:03 IP:220.130.xxx.xxx 未訂閱
不好意思,是之前問的,但照m8815010大大的說法做了是沒法像上面圖形般有個像panel可以把圖show在上面. 用TImage的方法會因圖的大小不一而重疊或無法排列整齊,也找不到可以把圖用stretch來合進TImage的property.因此再請教一次
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-11-02 11:25:47 IP:61.63.xxx.xxx 未訂閱
引言: 不好意思,是之前問的,但照m8815010大大的說法做了是沒法像上面圖形般有個像panel可以把圖show在上面. 用TImage的方法會因圖的大小不一而重疊或無法排列整齊,也找不到可以把圖用stretch來合進TImage的property.因此再請教一次
samdb你好: 嗯,首先如果你要有 >!) 另外我用 class="code"> oid __fastcall TForm1::ListView1SelectItem(TObject *Sender, TListItem *Item, bool Selected) { Graphics::TBitmap* bmp=new Graphics::TBitmap; bmp->LoadFromFile(Item->Caption); Image1->Stretch=true; <--新增這一行 Image1->Picture->Bitmap=bmp; delete bmp; //以下也可以達成目的,但效果與上述幾行不同,請自行測試 //Graphics::TBitmap* bmp=new Graphics::TBitmap; //bmp->LoadFromFile(Item->Caption); //Graphics::TBitmap* _bmp=new Graphics::TBitmap; //_bmp->Height=Image1->Height; //_bmp->Width=Image1->Width; //TRect Srcrect=Rect(0,0,bmp->Width,bmp->Height); //TRect Desrect=Rect(0,0,_bmp->Width,_bmp->Height); //_bmp->Canvas->CopyRect(Desrect,bmp->Canvas,Srcrect); //Image1->Picture->Bitmap=bmp; //delete bmp; //delete _bmp; } 嗯,目前測試大概這樣改就行了!所以如果還有不妥請再造知! >!
samdb
一般會員


發表:9
回覆:10
積分:3
註冊:2004-05-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-11-02 20:46:22 IP:220.130.xxx.xxx 未訂閱
請問一下, 圖叫入ScrollBox內,如何游標棒移動的同時ScrollBox裏面的陣列圖形也一起同步移動? 我用游標棒移動時陣列圖都不動直到滑鼠左鍵放掉才會秀出那相對位置的圖出來. 是ScrollBox的那個屬性要改一下? Thanks....
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-11-02 21:41:37 IP:210.244.xxx.xxx 未訂閱
引言: 請問一下, 圖叫入ScrollBox內,如何游標棒移動的同時ScrollBox裏面的陣列圖形也一起同步移動? 我用游標棒移動時陣列圖都不動直到滑鼠左鍵放掉才會秀出那相對位置的圖出來. 是ScrollBox的那個屬性要改一下? Thanks....
samdb你好: 不好意思,你現在是限定用
samdb
一般會員


發表:9
回覆:10
積分:3
註冊:2004-05-24

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-11-02 23:01:33 IP:220.130.xxx.xxx 未訂閱
M8815010大大您好, 發表人 - samdb 於 2004/11/02 23:10:05
samdb
一般會員


發表:9
回覆:10
積分:3
註冊:2004-05-24

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-11-02 23:02:17 IP:220.130.xxx.xxx 未訂閱
M8815010大大您好, 發表人 - samdb 於 2004/11/02 23:11:34
samdb
一般會員


發表:9
回覆:10
積分:3
註冊:2004-05-24

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-11-02 23:02:59 IP:220.130.xxx.xxx 未訂閱
M8815010大大您好, 我試了用vsIcon也沒出現大的縮圖,您的可以嗎?我試了是可以秀出圖出來,但就是沒有像上面的圖一樣整齊.用Panel應該可以如上圖一般整齊,但要隨圖檔數來動態產生可能有點麻煩. 現在正在改Image->Height及Image->Weight來符合大小, 但是Bmp可以,Jpg又沒有Stretch的屬性.如果M8815010兄有個vsIcon的範例可否upload上來以便參考一下結果.... 謝謝先....
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-11-04 01:00:44 IP:211.74.xxx.xxx 未訂閱
引言: M8815010大大您好, 我試了用vsIcon也沒出現大的縮圖,您的可以嗎?我試了是可以秀出圖出來,但就是沒有像上面的圖一樣整齊.用Panel應該可以如上圖一般整齊,但要隨圖檔數來動態產生可能有點麻煩. 現在正在改Image->Height及Image->Weight來符合大小, 但是Bmp可以,Jpg又沒有Stretch的屬性.如果M8815010兄有個vsIcon的範例可否upload上來以便參考一下結果.... 謝謝先....
samdb你好: 我測試了好一會兒,發現我原來 >!),是有問題,但我覺得好像跟你敘述的又點差,呵呵! src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=18496748&CC=413672"> 針對點1我的改法是固定存入TImageList元件的圖像大小,見下面範例程式! 針對點2我的改法是將ListView元件的sorttype屬性改為stBoth 以下是我的完整測試source code,已可載入不同大小的圖檔,並排好,但只吃.bmp檔,其它圖檔同理!
Unit1.h
~~
class TForm1 : public TForm
{
__published:        // IDE-managed Components
        TDirectoryListBox *DirectoryListBox1;
        TBevel *Bevel1;
        TImage *Image1;
        TImageList *ImageList1;
        TListView *ListView1;
        TFileListBox *FileListBox1;
        void __fastcall DirectoryListBox1Change(TObject *Sender);
        void __fastcall FormCreate(TObject *Sender);
        void __fastcall ListView1SelectItem(TObject *Sender,
          TListItem *Item, bool Selected);
private:        // User declarations
public:                // User declarations
        __fastcall TForm1(TComponent* Owner);
};    Unit1.cpp
~~
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DirectoryListBox1Change(TObject *Sender)
{
 ListView1->Items->Clear();     for (int fCnt=0;fCntItems->Count;fCnt++) {
      AnsiString filename=FileListBox1->Items->Strings[fCnt];          if (ExtractFileExt(filename).LowerCase()==".bmp") {   //如果檔案是.bmp的話
          TListItem* Itm;               //新增ListView的一個item
          Itm=ListView1->Items->Add();
          Itm->Caption=AnsiString(filename);              Graphics::TBitmap *bmp=new Graphics::TBitmap();  //載入圖檔
          bmp->LoadFromFile(filename);              bmp->Width=100;         //固定圖像大小
          bmp->Height=100;              TRect SrcRect=Rect(0,0,bmp->Width,bmp->Height);  //縮圖比率設定
          TRect DesRect=Rect(0,0,100,100);              if (bmp->Width>100 || bmp->Height>100)
              bmp->Canvas->CopyRect(DesRect,bmp->Canvas,SrcRect);   //縮圖
         
          //bmp->Width=100;         //請測試這兩行放這裏有什麼不同
          //bmp->Height=100;              Itm->ImageIndex=ImageList1->Add(bmp,NULL);  //把圖存入imagelist中,並讓item享有此圖示              delete bmp;
      }
 }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 ListView1->ViewStyle=vsIcon;           //設定為大圖示模式
 ListView1->LargeImages=ImageList1;     //大圖示來源元件     ImageList1->Height=100;                //default 大圖示 height
 ImageList1->Width=100;                 //default 大圖示 width     DirectoryListBox1->FileList=FileListBox1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ListView1SelectItem(TObject *Sender,
      TListItem *Item, bool Selected)
{
 Graphics::TBitmap* bmp=new Graphics::TBitmap;
 bmp->LoadFromFile(Item->Caption);     Image1->Stretch=true;
 Image1->Picture->Bitmap=bmp;
 delete bmp;
}    
result: 程式目前測試無NG,請確認程式中用的元件! 另外整體效果還沒有windows中檔案總管中的效果那般佳,請測試! All
samdb
一般會員


發表:9
回覆:10
積分:3
註冊:2004-05-24

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-11-05 00:23:09 IP:220.130.xxx.xxx 未訂閱
m8815010 你好: 一直找不到有那個屬性可以縮圖進100x100?現看到的都只能看到左上角的部份... >_<
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-11-05 13:16:49 IP:61.63.xxx.xxx 未訂閱
引言: m8815010 你好: //bmp->Width=100; //bmp->Height=100; //請測試這兩行放這裏有什麼不同 ==>縮圖進100x100了. 只是有個問題,用Mouse在ListView的每個圖按幾次左鍵就會發現有時會點了圖但沒有反白,要等個幾秒之後再點一下才又反白,不知為什麼?是TImageList都會如此? 但在圖的下面的檔名上按Mouse左鍵就沒有這种情形,點了幾乎都會反白.何以會這樣?>_< 發表人 - samdb 於 2004/11/05 01:21:46
samdb你好: 首先我的程式中這一段: < class="code"> I bmp->Width=100; //固定圖像大小 bmp->Height=100; TRect SrcRect=Rect(0,0,bmp->Width,bmp->Height); //縮圖比率設定 TRect DesRect=Rect(0,0,100,100); if (bmp->Width>100 || bmp->Height>100) bmp->Canvas->CopyRect(DesRect,bmp->Canvas,SrcRect); //縮圖 II //bmp->Width=100; //請測試這兩行放這裏有什麼不同 //bmp->Height=100; 注意 I、II 這兩部份的程式碼是相同的(功用都是縮圖),但我的意思是說: case1.mark掉 I 只用 II case2.mark掉 II 只用 I 這兩個 case 的效果絕然不同,請自行測試一下< >! 另外我的前一篇回覆中的那張例圖(第二張)中,就有選了一張圖(最左下那張),你是說那種反白的效果嗎? 如果是的話,我剛剛又特別測了一下,我的並不會有你說的問題,不管是用滑鼠點選圖片或字都一樣, 所以我不知道你的為什麼會這樣哦< >!
samdb
一般會員


發表:9
回覆:10
積分:3
註冊:2004-05-24

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-11-06 00:14:43 IP:220.130.xxx.xxx 未訂閱
m8815010兄, 有抓到問題點了.圖叫入ListView1之後,在ListView1右邊的圖上任意位置按左鍵都會有作用. 而左邊的圖就要選圖的左上角範圍按mouse左鍵才會反白(點選作用). Study 中...... 發表人 - samdb 於 2004/11/06 00:17:15
samdb
一般會員


發表:9
回覆:10
積分:3
註冊:2004-05-24

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-11-07 23:57:01 IP:220.130.xxx.xxx 未訂閱
M8815010大大您好, 可能是之前改到那一個property,Form重做一次就好了. 多謝了.
系統時間:2024-11-23 9:21:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!