亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#如何實現圖片查看器

2020-01-24 01:12:42
字體:
來源:轉載
供稿:網友

這篇文章將簡單介紹下如何使用C#來實現一個圖片查看器的功能的,該工具保存的功能有:

1、 可以通過“上一張” “下一張”這樣的按鈕來輪換瀏覽圖片
 2、實現對圖片的旋轉
 3、實現對旋轉后圖片的保存功能。本程序不僅提供旋轉90/180/270這樣的實現,同時提供一個方法來完成旋轉任意角度的實現
4、該程序未實現Windows圖片查看圖片縮放的功能,這部分的功能主要要點是改變圖片在PictureBox控件中的高度和寬度就可以的
二、實現思路
2.1 圖片輪換瀏覽功能的實現
首先分析下第一個功能點的實現,要實現圖片的輪換瀏覽,我們可以根據下面的思路來實現:

第一步、獲得目錄下所有圖片的集合,此時使用Directory.GetFiles()來獲得目錄下所有文件,然后再對該集合進行篩選,篩選出是圖片的文件,代碼用擴展名進行篩選的
第二步、獲得所有圖片集合之后,實現圖片輪換就需要改變這個集合的索引就可以實現上一張和下一張的功能了
第三步、需要考慮到最后一張或者第一張的情況下,再點擊下一張或上一張圖片來輪換成第一張或最后一張
思路就是上面的,有了上面的思路之后,就讓我們看看具體的代碼來對照理解下:

// 第一步// 獲得預覽圖片文件路徑下的圖片集合  public static List<string> GetImgCollection(string path)  {   string[] imgarray = Directory.GetFiles(path);   var result = from imgstring in imgarray       where imgstring.EndsWith("jpg", StringComparison.OrdinalIgnoreCase) ||        imgstring.EndsWith("png", StringComparison.OrdinalIgnoreCase)||       imgstring.EndsWith("bmp", StringComparison.OrdinalIgnoreCase)       select imgstring;   return result.ToList();  }   // 第二步  // 獲得打開圖片在圖片集合中的索引  private int GetIndex(string imagepath)  {   int index = 0;    for (int i = 0; i < imgArray.Count; i++)   {    if (imgArray[i].Equals(imagepath))    {     index = i;     break;    }   }   return index;  }  // 切換圖片的方法  private void SwitchImg(int index)  {   newbitmap = Image.FromFile(imgArray[index]);   picBoxView.Image = newbitmap;   imgPath = imgArray[index];  }   // 第三步   // 上一張圖片  private void btnPre_Click(object sender, EventArgs e)  {   int index = GetIndex(imgPath);   // 釋放上一張圖片的資源,避免保存的時候出現ExternalException異常   newbitmap.Dispose();   if (index == 0)   {    SwitchImg(imgArray.Count - 1);   }   else   {    SwitchImg(index - 1);   }  }  // 下一張圖片  private void btnNext_Click(object sender, EventArgs e)  {   int index = GetIndex(imgPath);   // 釋放上一張圖片的資源,避免保存的時候出現ExternalException異常   // 經常在調用Save方法的時候都會出現 一個GDI一般性錯誤,主要原因是文件沒有被釋放,當保存到原位置時,就會出現該異常,要避免這個錯誤就要釋放圖片占有的資源   newbitmap.Dispose();   if (index != imgArray.Count - 1)   {    SwitchImg(index + 1);   }   else   {    SwitchImg(0);   }  }

2.2 圖片旋轉功能的實現
上面的代碼實現了第一個功能點的問題了,下面就解釋下如何實現第二個功能點――圖片旋轉的問題:

對于Windows自帶的圖片查看器,它旋轉的角度只能順時針旋轉90或逆時針旋轉90度,這個功能實現起來可以說非常簡單,只需要使用Image.RotateFlip(RotateFlipType)方法就可以完成的,有些朋友也想對圖片實現旋轉任意角度,對于這個問題源碼中也有具體的實現,大家可以從文章的最后下載源碼進行查看,這里就不貼出具體代碼的,下面就看看如何實現Windows自帶的圖片查看器的旋轉功能的代碼:

 // 順時針旋轉90度旋轉圖片  private void btnRotate_Click(object sender, EventArgs e)  {   picBoxView.SizeMode = PictureBoxSizeMode.Zoom;      // 順時針旋轉90度的另外一種實現   newbitmap.RotateFlip(RotateFlipType.Rotate90FlipNone);   picBoxView.Image = newbitmap;   isRotate = true;   //newbitmap = (Image)ImageManager.RotateImg(bitmap, 90f, Color.Transparent); ;   //bitmap.Dispose();   //picBoxView.Image = newbitmap;  }    // 逆時針旋轉90度  private void btncounterclockwiseRotate_Click(object sender, EventArgs e)  {   picBoxView.SizeMode = PictureBoxSizeMode.Zoom;    // 逆時針旋轉90度的另外實現   newbitmap.RotateFlip(RotateFlipType.Rotate270FlipNone);   picBoxView.Image = newbitmap;   isRotate = true;   // 下面是旋轉任意角度的代碼   //newbitmap = (Image)ImageManager.RotateImg(bitmap, 360f-90f, Color.Transparent); ;   //bitmap.Dispose();   //picBoxView.Image = newbitmap;  }

2.3 對旋轉圖片的保存功能的實現
最后就是針對旋轉圖片保存的實現了,此時我參考了Windows自帶圖片查看器的實現方式,因為我用Windows自帶圖片查看器瀏覽圖片的實現,當我旋轉圖片時,它并不是實時地保存到旋轉的圖片的,而是當我關閉Windows自帶圖片查看器的時候,旋轉的圖片才保存到文件中的,有了這個思路之后,我就把我保存的代碼邏輯放在窗體的關閉的事件處理程序中來實現的,此時保存的功能我們只需要調用Image.Save(path)方法就可以完成對圖片的保存,下面就看看具體代碼的實現的:

 // 關閉窗體后保存旋轉后的圖片到文件中  private void Form1_FormClosed(object sender, FormClosedEventArgs e)  {   if (imgPath == null || isRotate == false)   {    return;   }   // 保存旋轉后的圖片   switch (Path.GetExtension(imgPath).ToLower())   {    case ".png":     newbitmap.Save(imgPath, ImageFormat.Png);     newbitmap.Dispose();     break;    case ".jpg":     newbitmap.Save(imgPath);     newbitmap.Dispose();     break;    default:     newbitmap.Save(imgPath, ImageFormat.Bmp);     newbitmap.Dispose();     break;   }  }

三、實現效果
上面已經介紹了實現該程序的一個思路的,朋友是不是迫不及待的想看到到底自定義圖片查看器是什么樣子的呢?下面就通過一個動畫來讓大家更形象地看到程序的運行效果的:

四、小結
到這里該文章的內容就介紹結束了,希望大家如果遇到類似的問題可以很快從這篇文章中得到解決。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美人在线视频| 国产一区二区三区网站| 国产精品揄拍500视频| 亚洲成人国产精品| 中文字幕亚洲图片| 91久久久久久久一区二区| 精品一区电影国产| 久久久国产精品亚洲一区| 成人国产精品日本在线| 日韩欧美中文免费| 久久免费精品视频| 欧美巨猛xxxx猛交黑人97人| 国产91对白在线播放| 国产98色在线| 欧美日产国产成人免费图片| 日韩在线欧美在线国产在线| 日韩高清av一区二区三区| 久久精品国产一区二区三区| 欧美在线免费看| 91在线观看免费网站| 日韩中文有码在线视频| 久久这里只有精品99| www.日韩av.com| 一区国产精品视频| 美日韩精品视频免费看| 亚洲精品久久久一区二区三区| 久久久亚洲天堂| 日韩av最新在线| 亚洲一区二区三区视频播放| 久久99国产综合精品女同| 国产精品久久9| 在线观看精品国产视频| 亚洲精品理论电影| 国产精品免费视频久久久| 亚洲免费视频一区二区| 中文字幕日韩av电影| 亚洲资源在线看| 国产狼人综合免费视频| 亚洲va欧美va在线观看| 日韩电影免费观看中文字幕| 亚洲成人网av| 欧美性xxxxxxxxx| 久久69精品久久久久久久电影好| 国产精品一二三在线| xxx一区二区| 亚洲综合成人婷婷小说| 国产精品久久视频| 亚洲一区二区久久| 成人在线视频网| 久久这里有精品| 国产日韩av在线| 亚洲欧美国产精品久久久久久久| 国产精品白嫩初高中害羞小美女| 精品国产乱码久久久久久虫虫漫画| 亚洲va欧美va国产综合剧情| 色综合久久天天综线观看| 国产精品丝袜高跟| 欧美精品video| 亚洲精品国产美女| 懂色aⅴ精品一区二区三区蜜月| 国产日韩精品电影| 欧美丰满片xxx777| 国产日韩欧美中文| 久久久久久69| 日本欧美一级片| 亚洲毛片一区二区| 亚洲美女视频网| 亚洲国产欧美精品| 成人久久久久爱| 日韩精品极品视频免费观看| 久久影视电视剧免费网站清宫辞电视| 韩剧1988在线观看免费完整版| 国产精品久久久久91| 成人h视频在线| 亚洲欧洲国产精品| 最新国产精品亚洲| 国产在线拍揄自揄视频不卡99| 亚洲free嫩bbb| 欧美电影电视剧在线观看| 国产99久久精品一区二区| 国产欧美最新羞羞视频在线观看| 欧美性受xxx| 国产亚洲精品美女| 一区二区三区回区在观看免费视频| 日韩高清有码在线| 日韩在线视频观看| 亚洲精品网址在线观看| 91麻豆桃色免费看| 一个色综合导航| 激情久久av一区av二区av三区| 欧美大片网站在线观看| 91牛牛免费视频| 欧美激情精品久久久久久黑人| 另类色图亚洲色图| 欧美在线视频免费播放| 日韩av手机在线观看| 国产精品高清免费在线观看| 国产精品一区二区三区久久| 国外色69视频在线观看| 色综合视频一区中文字幕| 亚洲香蕉成人av网站在线观看| 国产精品极品尤物在线观看| 中文字幕亚洲一区在线观看| 一本色道久久综合狠狠躁篇的优点| 在线视频欧美性高潮| 欧美精品在线视频观看| 精品视频在线观看日韩| 美乳少妇欧美精品| 久久久精品国产亚洲| 日本欧美国产在线| 国产亚洲免费的视频看| 亚洲福利视频二区| 国产精品高潮粉嫩av| 亚洲男人天堂2023| 国产精品久久久久久中文字| 亚洲高清不卡av| 欧美裸体xxxx极品少妇软件| 在线电影av不卡网址| 成人激情电影一区二区| 国产精品1区2区在线观看| 国产噜噜噜噜久久久久久久久| 久久久久久国产免费| 日韩av在线一区二区| 77777少妇光屁股久久一区| 日韩在线www| 亚洲电影免费在线观看| 亚洲国产中文字幕久久网| 亚洲a∨日韩av高清在线观看| 欧美日韩不卡合集视频| 欧美老女人在线视频| 精品久久久久久亚洲精品| 97精品久久久| 2021久久精品国产99国产精品| 亚洲国产成人在线播放| 97精品国产97久久久久久| 92版电视剧仙鹤神针在线观看| 日韩中文字幕av| 欧美日韩性视频| 九九久久精品一区| 亚洲第一精品自拍| 国产91色在线|免| 免费av在线一区| 亚洲图片制服诱惑| 精品人伦一区二区三区蜜桃免费| 日韩精品久久久久久久玫瑰园| 欧美在线视频一区二区| 国产精品极品在线| 九九精品在线视频| 欧美在线精品免播放器视频| 亚洲精品永久免费| 欧美精品成人91久久久久久久| 最近2019年日本中文免费字幕| 欧美裸体男粗大视频在线观看| 国产精品久久久久久久久借妻| 懂色av影视一区二区三区| 日韩精品在线免费观看视频| 国产精品1区2区在线观看| 国产精品日韩在线观看| 秋霞午夜一区二区| 国产欧美精品日韩| 一区二区三区动漫| 亚洲性生活视频在线观看| 国产在线久久久| 亚洲第一精品久久忘忧草社区|