repositoryItemPictureEdit 中显示网络图片 DevExpress学习

上一节我们讲到了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;
        }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值