2013-10-25 43 views
0

...我已經尋找一個答案,我的問題,並嘗試了許多解決方案,但並不能解決它使用相對路徑在Windows圖像形成應用

我有一個Windows窗體應用程序,我必須設置圖像中的圖片動態盒子,我已經成功地用下面的代碼

pictureBox2.Image = Image.FromFile("C:/Users/user/Documents/College Work/4th Year/Advanced Net/Projects/Game/Resources/" + Quiz1FromFile.Q1Ans + ".jpg");); 

如何修改上述路徑,這樣,如果我移動的項目的位置,將工作做這個。 「遊戲」是窗體項目的名稱

+1

看看下面的兩個答案。兩者都是有效的。但這取決於你想做什麼。你是否希望你的應用程序總是查看特定的相對路徑,或者你想擁有任意的路徑?如果任意路徑,添加'app.config'文件並使用設置。如果你想要靜態相對路徑,使用'Environment.CurrentDirectory'並從那裏開始。所以如果你的圖像總是在你的bin \ images中,你將需要編寫'Image.FromFile(Path.combine(Environment.CurrentDirectory,「images」,「image1.jpeg」))' –

+0

我同意@ T.S。因爲對於桌面應用程序,你無法控制它如何啓動(工作目錄),那麼使用相對路徑是不安全的(如果工作目錄不符合你的預期,它將會中斷)。使用絕對路徑更安全。 –

回答

0

你需要兩件事情。 首先,文件名應該是與可執行文件相關的相對路徑。 第二件事是你需要確保圖像實際存在。 可以使用後期構建事件將圖像複製到DestinationFolder路徑。

看一看here

1

最好的辦法是add an ApplicationSettings在您的項目屬性的設置選項卡。
致電此屬性,例如"ImagePath",並將此屬性設置爲您的默認開發路徑。

完成之後,您的app.config文件(編譯爲YourApplicationName.exe.Config時)將包含您的默認路徑的值。

<applicationSettings> 
    <YourAppNamespace.Properties.Settings> 
     <setting name="ImagePath" serializeAs="String"> 
      <value>C:/Users/user/Documents/College Work/4th ......</value> 
     </setting> 
    <(YourAppNamespace.Properties.Settings> 
</applicationSettings> 

該文件將隨您的應用程序一起發佈,您可以使用部署過程更改該路徑。

在代碼中,你可以參考使用

string imagePath = Properties.Settings.Default.ImagePath; 
pictureBox2.Image = Image.FromFile(Path.Combine(imagePath, Quiz1FromFile.Q1Ans, ".jpg")); 

這樣,你不要硬代碼路徑在應用程序內的圖像文件夾中存儲的配置文件的路徑和你不需要處理相對路徑。您只需將目標機器上的此值設置爲圖像文件的存儲。