2012-06-30 108 views
0

我試圖在一行中顯示圖片..爲此我試圖動態添加圖片框。圖像位置存儲在數據庫中。我的代碼是在行中動態添加圖片框

int iCtr = 0; 
     for (int i = 0; i < dt.Rows.Count; i++) 
     { 
      PictureBox picture = new PictureBox 
      { 
       Name = "pictureBox"+i, 
       Size = new Size(316, 320), 
       Location = new Point(1, iCtr * 1100 + 1), 
       Visible = true 
      }; 
      // string fname = dt.Rows[2]["FileName"].ToString(); 
      picture.ImageLocation = dt.Rows[i]["FileName"].ToString(); 
      //@"..\Images\80knhk00003.jpg"; 
      pnlDisplayImage.Controls.Add(picture); 
      iCtr++; 
     } 

其中dt是可數據。

與此我只能看到最後一個圖像,但不是所有的圖像。即使最後的圖像非常小,也不顯示完整的圖像(即,我只能查看實際圖像的一個角落)。

如何將圖像的大小放大以便可以完全查看圖像? 如何在行中顯示圖像?

請幫 感謝

+0

請刪除asp.net標記 –

+0

我在這裏猜測。但在面板上滾動滾動條可能會有所幫助。當他們只有320的高度時,你爲什麼將它們間隔1100。實際慣例是圖片框的大小,如果不是,則應該設置一個縮放選項,例如伸展。在設計時設置它,看看你需要做什麼來獲得你想要的,然後根據你學到的東西編寫代碼。 –

回答

3

你可以嘗試這樣的事情嗎?要獲得縮放比例,請參閱PictureBoxSizeMode

List<PictureBox> pictureBoxList = new List<PictureBox>(); 

for (int i = 0; i < dt.Rows.Count; i++) 
{ 
    PictureBox picture = new PictureBox 
    { 
     Name = "pictureBox" + i, 
     Size = new Size(316, 320), 
     Location = new Point(i * 316, 1), 
     BorderStyle = BorderStyle.FixedSingle, 
     SizeMode = PictureBoxSizeMode.Zoom 
    }; 
    picture.ImageLocation = dt.Rows[i]["FileName"].ToString(); 
    pictureBoxList.Add(picture); 
} 

foreach (PictureBox p in pictureBoxList) 
{ 
    pnlDisplayImage.Controls.Add(p); 
} 
-1

,而不是圖像屬性,設置BackgroundImage屬性到您的圖片的位置,然後設置BackGroundImageLayout值「拉伸」然後你會看到完整的圖像。