C#編程實(shí)現(xiàn)簡(jiǎn)易圖片瀏覽器的方法
本文實(shí)例講述了C#編程實(shí)現(xiàn)簡(jiǎn)易圖片瀏覽器的方法。分享給大家供大家參考,具體如下:
首先需要加上命名空間 using system.io;
拖一個(gè)PICTUREBOX,兩個(gè)TEXTBOX
string fold = "";//用來(lái)存不包含文件后綴名的路徑 string[] files;//用來(lái)存當(dāng)前所有統(tǒng)一后綴文件的總路徑 int pos=0;//用于圖片切換 private void button1_Click(object sender, EventArgs e) { OpenFileDialog of = new OpenFileDialog();//打開(kāi)“打開(kāi)文件”對(duì)話(huà)框 of.Title = "打開(kāi)圖像文件";//命名 of.Filter = "圖像文件|*.bmp;*.jpg";//選擇文件 if (of.ShowDialog() == DialogResult.OK && of.FileName != "") { int p = of.FileName.LastIndexOf(@"\");//得到斜杠的索引 fold = of.FileName.Substring(0, p + 1);//得到除了文件后綴的(包含斜杠)的路徑 FileInfo fi = new FileInfo(of.FileName);//一種io下的實(shí)例方法 string ext = fi.Extension;//利用上面的方法取得擴(kuò)展名 textBox1.Text = of.FileName;//總路徑 label1.Text = fold;//不含后綴,這兩行代碼完全是給讀者看的 Image image = Image.FromFile(of.FileName);//實(shí)例化一個(gè)圖片,該圖片是你選擇的那張圖片 pictureBox1.Image = image;//將該圖片放入空間內(nèi) files = Directory.GetFiles(fold, "*" + ext);//將所有當(dāng)下文件夾下的圖片文件的全路徑放在該數(shù)組內(nèi) } } private void button2_Click(object sender, EventArgs e) { //下一張圖片 pos++; if (pos >=files.Length) { pos = 0; } string file = files[pos].ToString(); Image image = Image.FromFile(file); pictureBox1.Image = image; } private void button3_Click(object sender, EventArgs e) { //上一張圖片 pos--; if (pos < 0) { pos = files.Length - 1; } string file = files[pos].ToString(); Image image = Image.FromFile(file); pictureBox1.Image = image; }
效果圖如下:
問(wèn)題總結(jié)如下:
1. 所有的文件名字都存在數(shù)組files里面,按說(shuō)files[ ]里的元素就固定了??墒?,無(wú)論先打開(kāi)哪一張圖片,點(diǎn)擊下一張后,都可以正確的讀出下一張(問(wèn)題是POS的初值是0,無(wú)論打開(kāi)哪張,下一張的執(zhí)行命令都會(huì)搜索到files[1],可每次打開(kāi)的圖片不同啊,用相同的files[1]怎么還能搜索到自己對(duì)應(yīng)的下一張呢,這個(gè)數(shù)組到底是咋存的)
解決方案:其實(shí)每次的files[1]是不同的,因?yàn)榈谋热缒阆却蜷_(kāi)第二張圖片,那么第一,二,三,四張圖片對(duì)應(yīng)的數(shù)組元素應(yīng)該是files[3],files[0],files[1],files[2];如果先打開(kāi)第一張圖片,那么files[0]應(yīng)該默認(rèn)的是第一張圖片,files[1]自然就是第二張了(只有這樣才能說(shuō)的通)。
2. 如上圖,圖片只顯示了一部分,并沒(méi)用顯示全,可能是由于控件太小了。
解決方案:為了讓圖片的顯示與PICTUREBOX相符,在button1里加如下語(yǔ)句:
此外還有個(gè)小BUG,如果一共有4張圖片,先打開(kāi)第四張后點(diǎn)擊下一張,會(huì)出現(xiàn)第二張。原因是POS的初始值是0,再BUTTON2里加1也不過(guò)是1,所以選擇第四張圖片的時(shí)候跳轉(zhuǎn)到files[1]也就是第二個(gè)圖片,這里不知道怎么修改了,有大牛看到了幫忙修復(fù)下BUG。
希望本文所述對(duì)大家C#程序設(shè)計(jì)有所幫助。
- C#實(shí)現(xiàn)清除IE瀏覽器緩存的方法
- C#實(shí)現(xiàn)基于IE內(nèi)核的簡(jiǎn)單瀏覽器完整實(shí)例
- C# 利用Selenium實(shí)現(xiàn)瀏覽器自動(dòng)化操作的示例代碼
- C#瀏覽器提示跨域問(wèn)題解決方案
- C# 模擬瀏覽器并自動(dòng)操作的實(shí)例代碼
- C#導(dǎo)出pdf的實(shí)現(xiàn)方法(瀏覽器不預(yù)覽直接下載)
- C# WinForm實(shí)現(xiàn)圖片瀏覽器
- C#文件下載實(shí)例代碼(適用于各個(gè)瀏覽器)
- C#實(shí)現(xiàn)多選項(xiàng)卡的瀏覽器控件
- C#使用默認(rèn)瀏覽器打開(kāi)網(wǎng)頁(yè)的方法
- c# 從IE瀏覽器獲取當(dāng)前頁(yè)面的內(nèi)容
相關(guān)文章
WinForm窗體調(diào)用WCF服務(wù)窗體卡死問(wèn)題
在Winform窗體中調(diào)用部署在其他服務(wù)器中的WCF服務(wù)時(shí),由于調(diào)用服務(wù)需要一定時(shí)延,因此窗體在這段時(shí)間一直卡住不能進(jìn)行其他操作2012-12-12算法練習(xí)之從String.indexOf的模擬實(shí)現(xiàn)開(kāi)始
這篇文章主要介紹了算法練習(xí)從String.indexOf的模擬實(shí)現(xiàn)開(kāi)始,需要的朋友可以參考下2014-12-12C#多線(xiàn)程之線(xiàn)程同步WaitHandle
這篇文章介紹了C#多線(xiàn)程之線(xiàn)程同步WaitHandle的用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03C#實(shí)現(xiàn)對(duì)字符串進(jìn)行大小寫(xiě)切換的方法
這篇文章主要介紹了C#實(shí)現(xiàn)對(duì)字符串進(jìn)行大小寫(xiě)切換的方法,涉及C#操作字符串的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03C#實(shí)現(xiàn)兩個(gè)時(shí)間相減的方法
這篇文章主要介紹了C#實(shí)現(xiàn)兩個(gè)時(shí)間相減的方法,實(shí)例分析了C#針對(duì)時(shí)間操作的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01Unity UGUI通過(guò)搖桿控制角色移動(dòng)
這篇文章主要為大家詳細(xì)介紹了Unity3D基于陀螺儀實(shí)現(xiàn)VR相機(jī)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11C#中的數(shù)組作為參數(shù)傳遞所引發(fā)的問(wèn)題
這篇文章主要介紹了C#中的數(shù)組作為參數(shù)傳遞所引發(fā)的問(wèn)題 的相關(guān)資料,需要的朋友可以參考下2016-03-03