2013-06-19 72 views
14

我明白這個問題已被問及(並回答)過。但是,沒有任何解決方案爲我工作。這可能是由於我的無能,巫術詛咒或簡單而明顯的我失蹤的原因。從包含路徑的資源文件加載PictureBox圖像(第3部分)

下面是謎題的所有相關部件的屏幕截圖:

Screen capture http://dinosaur-island.com/PlantPictureBoxScreenCap.jpg

正如你可以看到有加載的資源投入到圖像文件夾植物的大量骨形成蛋白。 有一個名爲「PlantPicture」的圖片框。有串,我知道有一個很好的路徑(因爲我已經在調試器檢查的話):

  PicPath = PicPath+".bmp"; 

Screen capture http://dinosaur-island.com/PlantDebugger.jpg

我已經試過裝的多種方式,鑄造等,等

如果你會憐惜,再給它一個鏡頭,我將不勝感激任何意見。謝謝!

回答

28

路徑應該是這樣的:"Images\a.bmp"。 (注缺乏領導斜線和斜線是斜線。)

然後:

pictureBox1.Image = Image.FromFile(@"Images\a.bmp"); 

我剛剛試了一下,以確保和它的作品。這是除了你得到的其他答案 - 「總是複製」。

+0

通過很多來獲取反斜槓。PicPath =「@Images \ None.bmp」(這是'無'圖像的正確路徑)...拋出錯誤:「類型未處理的異常系統.IO.FileNotFoundException'出現在System.Drawing.dll中。附加信息@Images \ None.bmp ...重複檢查。None。資源和磁盤'Images'中的文件夾都存在 – zetar

+1

@zetar「@ Images \ None.bmp「是錯誤的。@」Images \ None.bmp「是正確的。@只是告訴C#不要轉義」\「後面的」N「,而將」\「當作簡單的反斜線。你也可以這樣做:「\\」(一個雙反斜槓)。 – ispiro

+0

注意!刪除了正在傳入的字符串中的@! – zetar

2

將「複製到輸出目錄」設置爲「始終複製」或「如果更新複製」可能對您有所幫助。

您的PicPath是一個相對路徑,它在加載圖像時在某個時間轉換爲絕對路徑。 如果在Debug中使用Path.GetFullPath(PicPath),則很可能您會看到指定位置沒有圖像。

+0

我改爲「複製總是」 ...的輸出從Path.GetFullPath(PicPath)是「C:\\ Images \\ None.bmp」 - 當然不是我想要的。但是,我真的不希望從硬盤上加載圖片。這些圖像是不是可以作爲(我們以前稱之爲多年前的)「預編譯的內聯圖像」? – zetar

+0

是的。對不起,已經監督領先/ as ispiro聲明。 – wonko79

9

好......所以首先你需要在你的項目中導入圖像

1)選擇窗體設計

2)打開PictureBox的任務(這是pinted到右的小箭頭PictureBox的在PictureBox的邊緣)

3)點擊「選擇圖片...」

4)選擇第二個選項「項目資源文件:」(此選項將創建一個名爲「資源」的文件夾,你可以訪問Properties.Resources)

5)點擊進口和從您的計算機中選擇圖像(現名稱相同的圖像的副本,圖像將在))在步驟4中創建資源文件夾

6單擊OK發送

現在圖像在您的項目中,您可以使用它與屬性命令。

pictureBox1.Image = Properties.Resources.myimage; 

注:MYIMAGE表示圖像的名稱...輸入資源後點後,在你的選擇將是你導入的圖像文件時,你要的圖片,從圖片框更改只要輸入驗證碼

1

接受的答案有主要缺點!
如果你的圖片加載的方式是你的PictureBox將鎖定爲的圖像,所以如果你試圖對該圖像進行任何未來操作,將會在其他應用程序中使用錯誤消息
article show solution in VB

,這是C#實現

FileStream fs = new System.IO.FileStream(@"Images\a.bmp", FileMode.Open, FileAccess.Read); 
    pictureBox1.Image = Image.FromStream(fs); 
    fs.Close(); 
6

這取決於你的文件路徑。對我而言,當前目錄是[project]\bin\Debug,所以我必須移動到父文件夾兩次。

Image image = Image.FromFile(@"..\..\Pictures\"+text+".png"); 
this.pictureBox1.Image = image; 

要尋找當前目錄,你可以做一個假標籤稱爲標籤2和這樣寫:

this.label2.Text = System.IO.Directory.GetCurrentDirectory(); 
相關問題