精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

教你制作一個簡單的WPF圖片瀏覽器

開發 后端
本文教你用.Net編程制作一個簡單的WPF圖片瀏覽器,具體步驟詳見下文。

  制作一個簡單的WPF圖片瀏覽器  

  這里將實現以下幾個功能:

  1. 對指定文件夾下所有JPG文件進行預覽

  2. 對選定片進行旋轉

  3. 對選定片進行灰度處理

  4. 對選定片進行裁切處理

  5. 無限制的恢復功能

  6. 類似加入購物車的功能

  以下來看看其實現過程。

  1. 建立一個ImageFile類,用來讀取像文件:

  1. // ImageFile.cs  
  2. using System;  
  3. using System.Collections.Generic;  
  4. using System.Windows.Media.Imaging;  
  5. using System.Text;  
  6.  
  7. namespace PhotoDemo  
  8. {  
  9.     public class ImageFile  
  10.     {  
  11.         private String _path;  
  12.         public String Path { get { return _path; } }  
  13.  
  14.         private Uri _uri;  
  15.         public Uri Uri { get { return _uri; } }  
  16.  
  17.         private BitmapFrame _image;  
  18.         public BitmapFrame Image { get { return _image; } }  
  19.  
  20.         public ImageFile(string path)  
  21.         {  
  22.             _path = path;  
  23.             _uri = new Uri(_path);  
  24.             _image = BitmapFrame.Create(_uri);  
  25.         }  
  26.  
  27.         public override string ToString()  
  28.         {  
  29.             return Path;  
  30.         }  
  31.     }  

  2. 建立一個像列表的類,用于取得指定目錄下的所有jpg像文件

  1. // PhotoList.cs  
  2. using System;  
  3. using System.Collections.Generic;  
  4. using System.Collections.ObjectModel;  
  5. using System.IO;  
  6. using System.Text;  
  7.  
  8. namespace PhotoDemo  
  9. {  
  10.     public class PhotoList : ObservableCollection<ImageFile> 
  11.     {  
  12.         DirectoryInfo _directory;  
  13.         public DirectoryInfo Directory  
  14.         {  
  15.             set  
  16.             {  
  17.                 _directory = value;  
  18.                 Update();  
  19.             }  
  20.             get { return _directory; }  
  21.         }  
  22.  
  23.         public string Path  
  24.         {  
  25.             set  
  26.             {  
  27.                 _directory = new DirectoryInfo(value);  
  28.                 Update();  
  29.             }  
  30.             get { return _directory.FullName; }  
  31.         }  
  32.  
  33.         public PhotoList() { }  
  34.  
  35.         public PhotoList(DirectoryInfo directory)  
  36.         {  
  37.             _directory = directory;  
  38.             Update();  
  39.         }  
  40.  
  41.         public PhotoList(string path) : this(new DirectoryInfo(path)) { }  
  42.  
  43.         private void Update()  
  44.         {  
  45.             foreach (FileInfo f in _directory.GetFiles("*.jpg"))  
  46.             {  
  47.                 Add(new ImageFile(f.FullName));  
  48.             }  
  49.         }  
  50.     }  

  這里有兩個公共屬性:Directory和Path,用來獲取或設置像目錄信息和路徑,還有一個Update()私有方法,當文件路徑變化時,更新最新的像文件列表數據。

  3. 建立后期處理的類。

  由于后期加工均涉及“印”,所以就建立一個名為“印類型”(PrintType)的類:

  1. // PrintType.cs  
  2. using System;  
  3. using System.Collections.Generic;  
  4. using System.Text;  
  5.  
  6. namespace PhotoDemo  
  7. {  
  8.     public class PrintType  
  9.     {  
  10.         private string _description;  
  11.         public string Description { get { return _description; } }  
  12.  
  13.         private double _cost;  
  14.         public double Cost { get { return _cost; } }  
  15.  
  16.         public PrintType(string description, double cost)  
  17.         {  
  18.             _description = description;  
  19.             _cost = cost;  
  20.         }  
  21.  
  22.       public override string ToString()  
  23.         {  
  24.             return _description;  
  25.         }  
  26.     }  

  這里有兩個只讀屬性:描述Description和費用Cost,還對ToString()方法進行了重載。

#p#

  4. PrintTypeList類,是PrintType列表的集合。

  1. // PrintTypeList .cs  
  2. using System;  
  3. using System.Collections.Generic;  
  4. using System.Collections.ObjectModel;  
  5. using System.Text;  
  6.  
  7.    
  8. namespace PhotoDemo  
  9. {  
  10.     public class PrintTypeList : ObservableCollection<PrintType> 
  11.     {  
  12.         public PrintTypeList()  
  13.         {  
  14.             Add(new PrintType("4x6 Print", 0.15));  
  15.             Add(new PrintType("Greeting Card", 1.49));  
  16.             Add(new PrintType("T-Shirt", 14.99));  
  17.         }  
  18.     }  

  5. 建立一個PrintBase的類

  1. // PrintBase.cs  
  2. using System;  
  3. using System.Collections.Generic;  
  4. using System.ComponentModel;  
  5. using System.Windows.Media.Imaging;  
  6. using System.Text;  
  7.  
  8. namespace PhotoDemo  
  9. {  
  10.     public class PrintBase : INotifyPropertyChanged  
  11.     {  
  12.         #region public property  
  13.         private BitmapSource _photo;  
  14.         public BitmapSource Photo  
  15.         {  
  16.             set { _photo = value; OnPropertyChanged("Photo"); }  
  17.             get { return _photo; }  
  18.         }  
  19.  
  20.         private PrintType _PrintType;  
  21.         public PrintType PrintType  
  22.         {  
  23.             set { _PrintType = value; OnPropertyChanged("PrintType"); }  
  24.             get { return _PrintType; }  
  25.         }  
  26.  
  27.         private int _quantity;  
  28.         public int Quantity  
  29.         {  
  30.             set { _quantity = value; OnPropertyChanged("Quantity"); }  
  31.             get { return _quantity; }  
  32.         }  
  33.         #endregion public property  
  34.  
  35.         public PrintBase(BitmapSource photo, PrintType printtype, int quantity)  
  36.         {  
  37.             Photo = photo;  
  38.             PrintType = printtype;  
  39.             Quantity = quantity;  
  40.         }  
  41.  
  42.         public PrintBase(BitmapSource photo, string description, double cost)  
  43.         {  
  44.             Photo = photo;  
  45.             PrintType = new PrintType(description, cost);  
  46.             Quantity = 0;  
  47.         }  
  48.  
  49.         public event PropertyChangedEventHandler PropertyChanged;  
  50.         private void OnPropertyChanged(String info)  
  51.         {  
  52.             if (PropertyChanged != null)  
  53.                 PropertyChanged(this, new PropertyChangedEventArgs(info));  
  54.         }  
  55.  
  56.         public override string ToString()  
  57.         {  
  58.             return PrintType.ToString();  
  59.         }  
  60.     }  

  這里有三個可讀寫屬性:Photo, PrintType和Quantity(表示片的數量),還設置了一個PropertyChanged委托,用于當屬性變更時做相應的事件處理。

  6. 繼承自PrintBase的三個類:Print, GreetingCard, TShirt, 分別用來打印,制成賀卡及制作T恤衫。

  1. // Print.cs  
  2. using System;  
  3. using System.Collections.Generic;  
  4. using System.Windows.Media.Imaging;  
  5. using System.Text;  
  6.  
  7. namespace PhotoDemo  
  8. {  
  9.     public class Print : PrintBase  
  10.     {  
  11.         public Print(BitmapSource photo) : base(photo, "4x6 Print", 0.15) { }  
  12.     }  
  13. }  
  14.  
  15. // TShirt.cs  
  16. using System;  
  17. using System.Collections.Generic;  
  18. using System.Windows.Media.Imaging;  
  19. using System.Text;  
  20.  
  21. namespace PhotoDemo  
  22. {  
  23.     public class TShirt : PrintBase  
  24.     {  
  25.         public TShirt(BitmapSource photo) : base(photo, "T-Shirt", 14.99) { }  
  26.     }  
  27. }  
  28.  
  29. // GreetingCard.cs  
  30. using System;  
  31. using System.Collections.Generic;  
  32. using System.Windows.Media.Imaging;  
  33. using System.Text;  
  34.  
  35. namespace PhotoDemo  
  36. {  
  37.     public class GreetingCard : PrintBase  
  38.     {  
  39.         public GreetingCard(BitmapSource photo) : base(photo, "Greeting Card", 1.49) { }  
  40.     }  

  7. "印"的集合:PrintList

  1. // PrintList.cs  
  2. using System;  
  3. using System.Collections.ObjectModel;  
  4.  
  5. namespace PhotoDemo  
  6. {  
  7.     public class PrintList : ObservableCollection<PrintBase> { }  

【編輯推薦】

  1. 深入淺出WPF
  2. 讓你的.NET應用成為一個灰色盒子
  3. 詳解.NET數組的前世今生
  4. .Net程序員以最簡單方式學習Linux
  5. WPF全視角學習指南
責任編輯:韓亞珊 來源: 飛諾網
相關推薦

2022-06-13 06:33:04

瀏覽器瀏覽器插件

2017-12-14 15:45:02

2012-04-25 14:06:45

HTML5

2012-09-03 10:24:16

果粉瀏覽器

2009-05-27 08:54:15

瀏覽器平臺Chrome

2019-12-02 13:46:35

瀏覽器前端開發

2019-05-08 14:37:49

Web服務器HTTP

2021-06-02 06:14:50

Nyxt瀏覽器

2022-06-20 09:01:56

Plasmo開源

2020-07-06 08:23:11

開源瀏覽器操作系統

2014-08-18 14:58:25

微軟IE

2021-08-06 16:52:10

瀏覽器HTTPS通信

2023-12-21 11:12:31

Node.js.NET開源庫

2009-05-04 09:13:12

K-MeleonCCF瀏覽器

2016-09-21 12:34:10

Chrome瀏覽器插件

2009-09-11 09:11:09

2009-09-04 11:03:32

C#文件瀏覽器

2013-06-14 17:16:44

WP開發Windows PhoWP應用

2010-01-08 12:14:44

ibmdwAndroid

2010-04-05 21:57:14

Netscape瀏覽器
點贊
收藏

51CTO技術棧公眾號

亚洲 欧美 成人| 亚洲一级片av| 三级在线播放| 麻豆视频观看网址久久| 一区二区三区天堂av| 日本中文字幕二区| heyzo在线播放| 国产视频一区在线观看| 91亚洲精品一区| 国产无人区码熟妇毛片多| 日韩www.| 亚洲精品久久久久久久久久久久 | 精品国产青草久久久久福利| 久久久久久久激情| www.成人.com| av不卡免费在线观看| 91精品国产综合久久男男| 91看片淫黄大片91| 在线电影av不卡网址| 国产精品无码免费专区午夜| 麻豆av电影在线观看| 国产一区二区三区精品视频| 欧美日韩国产二区| 野花社区视频在线观看| 涩涩屋成人免费视频软件| 天天操天天综合网| 国产又黄又爽免费视频| 亚州男人的天堂| 久久国产乱子精品免费女| 欧美日韩福利电影| 国产黄色大片免费看| 亚洲国产aⅴ精品一区二区| 欧美性猛交xxxx富婆| 免费成人深夜夜行网站视频| 四虎影视精品成人| 国产精品一区2区| 国产精品69久久| 日本三级网站在线观看| 久久亚洲专区| 日韩精品中文字幕在线| 国产探花一区二区三区| 亚洲成人人体| 天天亚洲美女在线视频| 激情五月五月婷婷| 自拍视频在线免费观看| 91污片在线观看| 99国产在线| 91国偷自产中文字幕久久| 免费看的黄色欧美网站| 午夜欧美不卡精品aaaaa| 国产精品成人69xxx免费视频| 婷婷精品在线观看| 精品国产电影一区二区| 在线成人免费av| 国产精品久久久久久久久久齐齐| 欧美日韩亚洲一区二| www.avtt| 久久久久久国产精品免费无遮挡 | 国产精品极品尤物在线观看| 五月天色婷婷丁香| 成人一区而且| 亚洲欧美精品一区二区| 91传媒理伦片在线观看| 99久久香蕉| 欧美mv日韩mv亚洲| 亚洲妇女无套内射精| 欧美经典影片视频网站| 欧美一区二区三区四区久久| 狠狠干狠狠操视频| 日韩精品第二页| 欧美美女一区二区三区| 777一区二区| 国产精久久久| 欧美另类久久久品| 日本xxxx免费| 成人在线tv视频| 日韩成人av在线播放| 欧美bbbbb性bbbbb视频| 亚洲综合福利| 亚洲欧美日韩一区二区在线 | 国产精品免费精品一区| 亚洲欧洲日本mm| 久久久噜噜噜久久| 国产精品99精品| 久久成人亚洲| 国产精品18久久久久久首页狼 | 天堂久久一区二区三区| 国产精品黄页免费高清在线观看| 无码人妻精品一区二区蜜桃色欲| 视频一区在线播放| 国产欧美精品va在线观看| 精产国品一区二区| 久久久久久久欧美精品| 国产精品视频1区| 国产丰满美女做爰| 91色乱码一区二区三区| 色一情一乱一伦一区二区三区丨| 69视频在线观看| 综合色天天鬼久久鬼色| 国内少妇毛片视频| 国产免费不卡| 69堂精品视频| av天堂一区二区| 国产成人精品一区二区免费看京| 色悠悠久久88| 久久久久久激情| 另类亚洲自拍| 91精品在线播放| 手机在线精品视频| 国产女同性恋一区二区| 少妇久久久久久被弄到高潮| 欧美xoxoxo| 欧美一区二区高清| 国内精品久久99人妻无码| 日韩精品1区| 国内精品视频一区| 亚洲一区中文字幕在线| zzijzzij亚洲日本少妇熟睡| 亚洲高清视频一区二区| 精灵使的剑舞无删减版在线观看| 91福利在线免费观看| 四虎1515hh.com| sdde在线播放一区二区| 欧美精品精品精品精品免费| 国产成人自拍偷拍| 成人免费av在线| 日本一区视频在线| 欧美78videosex性欧美| 色欧美日韩亚洲| 无码人妻一区二区三区精品视频| 日韩av自拍| 热久久这里只有| 亚洲欧美激情另类| 亚洲色图.com| 一级特黄性色生活片| 精品亚洲自拍| 欧美另类在线观看| 亚洲天堂一二三| 国产亚洲人成网站| ww国产内射精品后入国产| 日本精品视频| 久热精品视频在线免费观看| 波多野结衣mp4| 99麻豆久久久国产精品免费| 色婷婷777777仙踪林| 国产在视频一区二区三区吞精| 精品国精品国产| 精品人妻中文无码av在线| 亚洲视频狠狠| 成人亚洲激情网| 永久免费av在线| 色妹子一区二区| 自拍视频一区二区| 国产日韩精品视频一区二区三区| 99r国产精品视频| www.久久ai| 日韩午夜激情视频| 成人高潮免费视频| 精品影院一区二区久久久| 亚洲va韩国va欧美va精四季| 欧美18—19sex性hd| 日韩成人在线播放| 1级黄色大片儿| 成人免费黄色在线| 欧美国产亚洲一区| 亚洲人成网77777色在线播放| 欧美亚洲国产视频| 成人在线观看一区| 777色狠狠一区二区三区| 乱老熟女一区二区三区| 九九在线精品视频| av久久久久久| 国产精品一区二区三区美女| 韩国精品久久久999| 熟妇人妻中文av无码| 五月婷婷综合网| 日韩精品电影一区二区三区| 国产在线精品一区二区不卡了 | 精品人妻一区二区三| 欧美 日韩 国产精品免费观看| 91手机在线视频| 女人天堂av在线播放| 亚洲国产一区二区三区四区| 国产污污视频在线观看| 久久综合成人精品亚洲另类欧美| 无码人妻丰满熟妇区96| 亚洲人成亚洲精品| 亚洲精品免费网站| 丁香花在线高清完整版视频| 国产丝袜精品视频| 中文字幕二区三区| 亚洲欧美乱综合| 一级黄色片毛片| 久久国产精品毛片| 亚洲AV无码成人精品一区| 亚洲精品一区在线| 欧美一级电影久久| 免费在线看黄| 亚洲成人在线视频播放| 成年人视频免费| 亚洲精品日韩一| 巨胸大乳www视频免费观看| 日本vs亚洲vs韩国一区三区二区| 男女h黄动漫啪啪无遮挡软件| 高清精品视频| 国产精品91久久久久久| av资源一区| 中文字幕欧美国内| 狠狠人妻久久久久久综合麻豆| 色综合久久综合网97色综合| 三级黄色录像视频| 91网页版在线| 国产精品嫩草影院8vv8| 在线综合欧美| 在线视频不卡国产| 偷窥自拍亚洲色图精选| 成人国产在线视频| 范冰冰一级做a爰片久久毛片| 久久综合五月天| 国模精品一区二区| 日韩欧美另类在线| 特级西西444www大胆免费看| 亚洲第一在线综合网站| 亚洲综合色一区| 国产综合色精品一区二区三区| 欧美啪啪免费视频| 亚洲天堂一区二区三区四区| 久久久久久国产精品mv| 精品久久久久久久久久岛国gif| 欧洲中文字幕国产精品| 欧美卡一卡二| 久久精品国产免费观看| 久久精品a一级国产免视看成人| 日韩免费成人网| 国产亚洲久一区二区| 亚洲v日本v欧美v久久精品| 午夜激情福利电影| 国产亚洲综合性久久久影院| 欧美双性人妖o0| 国产东北露脸精品视频| 不卡中文字幕在线观看| 日韩国产欧美在线播放| 日韩精品一区二区三区久久| 韩日欧美一区| 欧美xxxx吸乳| 久久日文中文字幕乱码| 亚洲免费不卡| 日本一区二区免费高清| 日本高清视频一区二区三区| 极品一区美女高清| 成人资源av| 日本免费一区二区三区视频| 成人福利网站在线观看| 香蕉成人在线| 国产在线精品自拍| 亚洲日本中文| 国产日本欧美一区二区三区在线| 精品123区| 国产精品扒开腿做| av在线不卡精品| 国产精品久久久久秋霞鲁丝| 成人国产一区| 日韩av成人在线观看| 欧美在线极品| 69国产精品成人在线播放| 国产美女福利在线观看| 色综合男人天堂| 免费在线中文字幕| 97视频在线观看免费| 毛片电影在线| 欧美亚洲国产视频小说| 日韩在线影院| 国产精品日韩在线播放| 香蕉久久一区| 超碰97人人在线| ccyy激情综合| 蜜桃视频日韩| 网友自拍区视频精品| 日本精品一区二区| 精品一区在线| 五月婷婷一区| 国产精品久久久久久麻豆一区软件 | 亚洲精品在线观| 午夜在线视频观看| 欧美精品一区二区久久婷婷| 少妇av一区二区| 正在播放欧美视频| 色婷婷在线播放| 国产成人aa精品一区在线播放| 日本美女久久| 91免费版黄色| 伊甸园亚洲一区| 亚洲一区二区在线免费观看| 91国语精品自产拍| 国产午夜福利100集发布| 日韩中文字幕不卡| 免费黄频在线观看| aa级大片欧美| 五月天精品视频| 亚洲人成在线观看一区二区| 久久免费少妇高潮99精品| 日韩欧美精品中文字幕| 91麻豆视频在线观看| 亚洲第一区在线观看| 国产高清自拍视频在线观看| 不卡av在线播放| 超碰国产一区| 亚洲一区久久久| 超碰97久久国产精品牛牛| 欧美另类网站| 午夜久久福利| 日韩一级片播放| 懂色av一区二区三区免费观看| 中文字幕国产专区| 亚洲一区二区欧美激情| 国产精品久久久久久人| 欧美精品粉嫩高潮一区二区| 日韩av地址| 欧美精品一区三区| 一呦二呦三呦精品国产| 国产精品视频免费观看| 四虎国产精品免费观看| 岳毛多又紧做起爽| 国产经典欧美精品| 一级黄色毛毛片| 欧美日韩国产一区二区三区| 国产精品探花视频| 一区二区三区国产在线观看| a级影片在线| 成人黄色免费看| 精品国产乱码久久久久久蜜坠欲下 | 久久久久久com| а√天堂资源国产精品| 免费成人深夜夜行视频| 狠色狠色综合久久| 91视频这里只有精品| 久久久精品国产99久久精品芒果| 免费毛片一区二区三区| 日韩精品一区二区三区在线观看| 91精品大全| 欧美与欧洲交xxxx免费观看| 欧美福利在线播放网址导航| 2022中文字幕| 国产乱理伦片在线观看夜一区| 婷婷综合在线视频| 在线看国产日韩| 国产中文字幕在线视频| 欧美做受高潮电影o| 免费萌白酱国产一区二区三区| 超碰人人爱人人| 国产黄人亚洲片| 国产大片免费看| 欧美福利电影网| 欧洲日本在线| 国产在线观看精品一区二区三区| 网曝91综合精品门事件在线| 91av在线免费播放| 国产亚洲精品超碰| 无码一区二区三区| 一本一道久久a久久精品逆3p| 性欧美videohd高精| 日本在线成人一区二区| 欧美aaaaaa午夜精品| 美国美女黄色片| 欧美久久久久久久久久| 免费在线午夜视频| 91在线在线观看| 韩日成人在线| 麻豆av免费看| 欧美午夜影院在线视频| 久久天堂电影| 国产精品极品尤物在线观看| 日韩88av| 美女被爆操网站| 精品久久久久久中文字幕| 亚洲aaa在线观看| 日韩免费观看高清| 性欧美69xoxoxoxo| 中出视频在线观看| 在线影院国内精品| 免费观看成人高潮| 成人高清在线观看| 国产九九精品| 欧美乱大交做爰xxxⅹ小说| 欧美成人精精品一区二区频| 国产拍在线视频| 亚洲a∨一区二区三区| 国产精品一区二区在线播放| 久久精品国产亚洲av麻豆色欲| 日韩精品视频在线| 成人精品一区二区三区电影| 国产树林野战在线播放| 99久久免费精品| 中文字幕一区二区三区人妻四季 | 黄色片视频在线免费观看| 中文字幕巨乱亚洲| 国产jzjzjz丝袜老师水多| 欧洲永久精品大片ww免费漫画| 日韩精品第一区| 色婷婷精品久久二区二区密|