上一节我们讲到了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;
}
在自己的项目中 我使用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;
}