2011-11-05 68 views
2

我在我的面板中創建了一個picturebox,我想用本地圖像填充它。如何使用ImageLocation將圖像放入我的圖片框中?

這是我迄今爲止所做的,以下代碼僅僅是我的面板創建代碼的一小部分。

PictureBox picture = new PictureBox 
     { 
      Name = "pictureBox", 
      Size = new Size(100, 50), 
      Location = new Point(14, 17) 
     }; 
     p.Controls.Add(picture); 
     picture.ImageLocation = @"..\Image\1.jpg"; 

它做的工作,但不能完全作爲後我啓動我的C#Windows窗體應用程序,它強制顯示一個白色的盒子在中間,而不是像一個紅色的叉。任何想法如何解決它?

回答

8

設置使用picture.ImageLocation()工作正常,圖像,但是你正在使用相對路徑。在構建完成後,根據.exe的位置檢查路徑。

例如,如果您.exe位於:

<project folder>/bin/Debug/app.exe

的圖像將不得不在:

<project folder>/bin/Image/1.jpg


當然,你可以只設置設計時的圖像(PictureBox屬性上的Image屬性片)。

如果您必須在運行時進行設置,確保知道圖像位置的一種方法是將圖像文件添加到項目中。例如,爲您的項目添加一個新文件夾,將其命名爲Image。右鍵單擊該文件夾,選擇「添加現有項目」並瀏覽至圖像(確保將文件過濾器設置爲顯示圖像文件)。添加圖像後,在屬性表中將Copy to Output Directory設置爲Copy if newer

在這一點上,當你構建應用程序,你可以回覆使用

picture.ImageLocation = @"Image\1.jpg"; 
+0

嗨,感謝您的回覆。我如何檢查路徑與.exe的位置? – Thomas

+0

這是一個相對路徑...因此,無論您的可執行文件位於何處,查找1個文件夾,然後從那裏查看Image Image文件夾。 –

+0

哦。好的解決了這個問題。它現在能夠加載「圖片」,但應用程序加載後,它出現了一個白色的盒子而不是圖像。任何想法如何解決這個問題?或者這是否與圖像大小和我的圖片大小? – Thomas

0

如果您提供了一個錯誤的路徑或斷開的鏈接,如果編譯器找不到圖像,圖片框會在其正文上顯示一個X圖標。

PictureBox picture = new PictureBox 
     { 
      Name = "pictureBox", 
      Size = new Size(100, 50), 
      Location = new Point(14, 17), 
      Image = Image.FromFile(@"c:\Images\test.jpg"), 
      SizeMode = PictureBoxSizeMode.CenterImage 
     }; 
p.Controls.Add(picture); 

OR

PictureBox picture = new PictureBox 
     { 
      Name = "pictureBox", 
      Size = new Size(100, 50), 
      Location = new Point(14, 17), 
      ImageLocation = @"c:\Images\test.jpg", 
      SizeMode = PictureBoxSizeMode.CenterImage 
     }; 
p.Controls.Add(picture); 

我不知道,你把圖像文件夾結構,但你可以找到路徑波紋管

picture.ImageLocation = Path.Combine(System.Windows.Forms.Application.StartupPath, "Resources\Images\1.jpg"); 
+0

感謝的圖像文件將被複制。它現在顯示一個白色框。是因爲我的圖像大小嗎?因爲原始圖像和我的圖片框圖像大小不匹配。 – Thomas

+0

@Thomas你有嘗試使用完整路徑嗎? – Damith

+0

是的我已經嘗試使用完整路徑。它會顯示一個白色框。通常我都不會顯示任何東西。如果沒有找到圖像,就會出現紅叉。但現在我認爲它能夠找到圖像文件,但它只是顯示一個白色框。 – Thomas

相關問題