repositoryItemPictureEdit 中显示网络图片 DevExpress学习

来源:互联网 发布:嘉兴市余新镇菜鸟网络 编辑:程序博客网 时间:2024/06/05 18:27
上一节我们讲到了PictureEdit 的使用  这一节我们来看看在gridControl中的repositoryItemPictureEdit 控件的图片显示 看起来好像是相同的  不过 据我这几天来的研究  发现Dome中的repositoryItemPictureEdit没有使用到Image属性 在属性当中也没有找到这个选项  看来repositoryItemPictureEdit中只能使用Dome中的方法 使用System.Byte[] 字节来存储图片 后显示... 下面我们来看看具体的实现过程
 
   在自己的项目中 我使用DevExpress来开发 C/S 软件模式来管理网站的总后台 在网站的数据库当中 有很多存储图片路劲的url地址  要让这些图片在客户端gridControl中的repositoryItemPictureEdit显示出来,用上一节的方法显然是不行的 我用的是DevExpress 8.3 后续版本是否支持我是不清楚  先将自己的学习结果发出来  供大家参考


先将要显示的数据读到DataSet当中  其中有个字段 比如 UrlImage 是存储图片的地址  以下代码

            ds.Tables[0].Columns.Add("Imgs",System.Type.GetType("System.Byte[]")); //新增dataset一列 名为Imgs 类型为System.Byte[]
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                string src = ds.Tables[0].Rows[i]["UrlImage"].ToString();
                ds.Tables[0].Rows[i]["Imgs"] = getImageByte(src); //通过getImageByte()函数获取图片的Byte[]
            }
            gridControl1.DataSource = ds.Tables[0];  //绑定到gridControl1当中 在gridControl1 中repositoryItemPictureEdit 设置FieldName为Imgs
            ds.Dispose();




        /// <summary>
        ///根据html路径获取图片的字节
        /// </summary>
        /// <param name="imagePath"></param>
        /// <returns></returns>
        private byte[] getImageByte(string imagePath)
         {
             try
             {
                 Image obj = Image.FromStream(System.Net.WebRequest.Create(imagePath).GetResponse().GetResponseStream());
                 byte[] bt = ImageToByteArray(obj);  //使用ImageToByteArray()函数 将Image类型转成Byte[]类型
                 obj.Dispose();
                 return bt;
             }
             catch  //如果获取异常 则使用资源中的图片显示
             {
                 Image obj = Resource1._20090119102027514;
                 byte[] bt = ImageToByteArray(obj);
                 obj.Dispose();
                 return bt;
             }
            
         }


        /// <summary>
        /// 根据image获取图片的字节
        /// </summary>
        /// <param name="image"></param>
        /// <returns></returns>
        private byte[] ImageToByteArray(Image image)
        {
            System.IO.MemoryStream mStream = new System.IO.MemoryStream();
            image.Save(mStream, System.Drawing.Imaging.ImageFormat.Png);
            byte[] ret = mStream.ToArray();
            mStream.Close();
            return ret;
        }

原创粉丝点击