擴展PictureBox的一個組件(2)

我的另一篇隨筆 擴展PictureBox的一個組件,最進還因為一些另外的原因﹐對這個picturebox又進行一些新的功能添加﹐如果你下載了上一篇隨筆的源組件﹐那么你可以很輕易利用下面的這個類來調用。不多說多余的話﹐貼出源出來(真的很奇怪﹐我又不能上傳源文件)

namespace  AuthenticationTestClient
{
    
using  System;
    
using  System.Drawing;
    
using  System.Windows.Forms;
    
using  System.IO;
    
///   <summary>
    
///  PictureControl 的摘要描述。
    
///   </summary>
     public   class  PictureControl
    {
        
public  PictureControl(){}
        
        [FlagsAttribute]
            
public   enum  ImgStyle {JPG, BMP, GIF};

        
private   byte [] _ImgArray  =   new   byte [ 1 ];
        
private  Image _Image;
        
public   byte [] ImgArray
        {
            
get
            {
                
if  (_ImgArray  ==   null ){     return   null ;}
                
return  _ImgArray;
            }
        }

        
public  Image Image
        {
            
get
            {
                
if  (_Image  ==   null )     return   null ;
                
return  _Image;
            }
        }

        
///   <summary>
        
///  裝載圖片
        
///   </summary>
        
///   <param name="FilterStyle"></param>
        
///   <returns></returns>
         public   static  PictureControl LoadImage (ImgStyle FilterStyle)
        {
            PictureControl PC 
=   new  PictureControl ();
            OpenFileDialog     FileDialog 
=   new  OpenFileDialog ();
            FileDialog.Filter 
=  PC.CombinFilter (FilterStyle);

            
if  (FileDialog.ShowDialog()  ==  DialogResult.OK)
            {
                
                PC._Image 
=  Image.FromFile (FileDialog.FileName);
                FileStream fStream 
=   new  FileStream (FileDialog.FileName,
                    FileMode .Open, FileAccess.Read, FileShare.Read);
                PC._ImgArray 
=   new   byte [fStream.Length];
                fStream.Read (PC._ImgArray, 
0 , ( int )fStream.Length);
                fStream.Flush ();
                fStream.Close ();
                
                
            }
            
else
            {
                
return   null ;
            }
            FileDialog.Dispose ();
            
return  PC;
        }

        
public   static  PictureControl ShowImage ( byte [] ImgArray)
        {
            MemoryStream mStream 
=   new  MemoryStream ();
            mStream.Write (ImgArray, 
0 , ImgArray.Length );
            PictureControl PC 
=   new  PictureControl ();
            PC._Image 
=  Image.FromStream (mStream);
            
return  PC ;
        }    

        
///   <summary>
        
///  合并enum
        
///   </summary>
        
///   <param name="FilterStyle"></param>
        
///   <returns></returns>
         private    string  CombinFilter (ImgStyle FilterStyle)
        {
            
string  FilterString  =   "" ;
            ImgStyle[] StyleArray 
=  (ImgStyle[])Enum.GetValues (FilterStyle.GetType());
            
for  ( int  i  =   0 ; i  <  StyleArray.Length; i ++ )
            {
                
if  (FilterString  ==   "" )
                    FilterString 
=  FilterStr(StyleArray[i]);
                
else
                {
                    FilterString 
=  FilterString  +   ' | '   +  FilterStr (StyleArray[i]);
                }
            }
            
return  FilterString;
        }

        
///   <summary>
        
///  取得實際的篩選值
        
///   </summary>
        
///   <param name="FilterStyle"></param>
        
///   <returns></returns>
         private   string  FilterStr (ImgStyle FilterStyle)
        {
            
string  FilterString  =   "" ;
            
switch  (FilterStyle)
            {
                
case  ImgStyle.BMP:
                    FilterString 
=   " BMP (*.bmp)|*.bmp " ;
                    
break ;
                
case  ImgStyle.JPG:
                    FilterString 
=   " JPG (*.jpg)|*.jpg " ;
                    
break ;
                
case  ImgStyle.GIF:
                    FilterString 
=   " GIF (*.gif)|*.gif " ;
                    
break ;
                
default :
                    
break ;
            }
            
return  FilterString ;
        }

    }
}

源碼都有詳細注釋﹐很容易的。調用方法如下﹕
this .pictureBox1.Image = PictureControl.ShowImage((PictureControl.LoadImage(PictureControl.ImgStyle.JPG)).ImgArray).Image;
//             this.pictureBox1.Image = PictureControl.LoadImage(PictureControl.ImgStyle.JPG).Image;




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值