在DevExpress GridControl的一列中显示图片
显示 图片 一列 devexpress GridControl
2023-09-14 09:03:14 时间
最近做项目的时候用到了将GridControl中一列设置为PictureEdit类型,然后通过这一列来显示图片。经过尝试发现有以下两种方式可行。
方法一、知道图片的路径与名称
比如:在数据库中存储了图片的路径(包括:本地路径、服务器路径),那么在可以通过非绑定列的方式来实现。
1、创建了一个非绑定列并设置其相应的属性,属性设置如下: FieldNa
小注:
[UWP]实现Picker控件 原文:[UWP]实现Picker控件 1. 前言 在WPF中,很多打开下拉框(Popup或Flyout)选择一个结果值的控件,除了ComboBox等少数例外,这种控件都以-Picker做名称后缀。因为要打开关闭下拉框和计算下拉框的弹出位置, 这类控件实现起来还挺麻烦的。
Devexpress treelist 控件属性大全 属性列表 1、OptionsSelection: EnableAppearanceForcusedCell:选中的Cell的Appearance设置是否可用。默认为True; EnableAppearanceForcusedRow:选中的Node的Appearance设置是否可用。
uwp 图片切换动画 原文:uwp 图片切换动画 最近在学习安卓,LOL自定义战绩项目近乎停工,而且腾旭把界面全改了,好烦。刚好学习到安卓中的图片切换动画,我就想在LOL项目中实现一个。首先上百度查看一下,妈的,资料少的可怜。
UWP 使用Telerik Chart控件 原文:UWP 使用Telerik Chart控件 Telerik开发的chart功能异常强大 用户可以自行在商店搜索“UI for uwp demos”。 下面我就结合以下我的软件,来说明一下饼状图的实现。
对于QTableView中的显示,我们前面介绍过很多种,其中包括:文本、进度条、复选框等,今天我们介绍一下关于富文本的显示。 可能绝大多数小伙伴会通过QAbstractTableModel中的data来实现,可是现实告诉我们,那是行不通的,那么我们如何去显示呢?请看正文。
最近做项目的时候用到了将GridControl中一列设置为PictureEdit类型,然后通过这一列来显示图片。经过尝试发现有以下两种方式可行。
方法一、知道图片的路径与名称
比如:在数据库中存储了图片的路径(包括:本地路径、服务器路径),那么在可以通过非绑定列的方式来实现。
1、创建了一个非绑定列并设置其相应的属性,属性设置如下:
FieldName设为 Photo(该字段名必须是唯一的)
UnboundType设为 UnboundColumnType.Object
ColumnEdit设为RepositoryItemPictureEdit类的实例(该操作PictureEdit 为该列的内置编辑器)
2.、添加GridView的CustomUnboundColumnData事件,用于为非绑定列填充数据。
既然已经设置完成了,那么具体的代码怎么编写呢?具体代码如下:
private void gridView1_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e) if (e.Column.FieldName == "Photo" e.IsGetData) //RefImage是存储图片路径的那一列 string filePath = (string)((DataRowView)e.Row)["RefImage"]; Image img = null; //判断图片路径是否为网络路径 if (UrlDiscern(filePath)) //文件是否存在 if (RemoteFileExists(filePath)) //读取文件 using (WebClient wc = new WebClient()) img = new Bitmap(wc.OpenRead(filePath)); // 判断本地文件是否存在 else if (LocalFileExists(filePath)) //加载本地图片 img = Image.FromFile(filePath); //pictureEdit列绑定图片 e.Value = img; catch (Exception ex) MessageBox.Show(ex.ToString()); /// summary /// 判断远程文件是否存在 /// /summary /// param name="fileUrl" /param /// returns /returns public bool RemoteFileExists(string fileUrl) HttpWebRequest re = null; HttpWebResponse res = null; re = (HttpWebRequest)WebRequest.Create(fileUrl); res = (HttpWebResponse)re.GetResponse(); if (res.ContentLength != 0) //MessageBox.Show("文件存在"); return true; catch (Exception) //MessageBox.Show("无此文件"); return false; finally if (re != null) re.Abort();//销毁关闭连接 if (res != null) res.Close();//销毁关闭响应 return false; /// summary /// 判断本地文件是否存在 /// /summary /// param name="path" /param /// returns /returns public bool LocalFileExists(string filePath) if (File.Exists(filePath)) return true; else return false; /// summary /// 识别urlStr是否是网络路径 /// /summary /// param name="urlStr" /param /// returns /returns public bool UrlDiscern(string urlStr) if (Regex.IsMatch(urlStr, @"((http|ftp|https)://)(([a-zA-Z0-9\._-]+\.[a-zA-Z]{2,6})|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,4})*(/[a-zA-Z0-9\ %_\./-~-]*)?")) return true; else return false; }
如果图片在单元格中显示有问题的话,可以调整
方法二、知道图片的路径与名称
除了方法一之外,我们还可以使用流的方式的来加载图片,即根据图片路径将图片转化为流,然后直接绑定到RepositoryItemPictureEdit列上即可。此时不需要修改列的绑定类型,只需要该列的FieldName与数据源中的byte[]流的所在列的名称一致即可,
如果这么绑定无效的话,可以在gridcontrol的数据源(此处假设为Dataset)中新增一列
ds.Tables[0].Columns.Add("Photo", System.Type.GetType("System.Byte[]"));然后,根据路径加载图片到Photo列中,
pre name="code" byte[] bb = PubFunc.getImageByte(path, webClient); ds.Tables[0].Rows[i]["Photo"] = bb;其中,可能会用到的函数如下:
/// summary /// 返回图片的字节流byte[] /// /summary /// param name="imagePath" /param /// param name="webClient" /param /// returns /returns public byte[] getImageByte(string imagePath) byte[] imgByte = null; if (UrlDiscern(imagePath)) using(WebClient webClient=new WebClient()) Bitmap bt = new Bitmap(webClient.OpenRead(imagePath)); imgByte = PubFunc.ImgToByte(bt); else using (FileStream files = new FileStream(imagePath, FileMode.Open)) imgByte = new byte[files.Length]; files.Read(imgByte, 0, imgByte.Length); files.Close(); catch (Exception ee) MessageBox.Show(ee.ToString()); return imgByte; }
/// summary /// 图片转换成字节流 /// /summary /// param name="img" 要转换的Image对象 /param /// returns 转换后返回的字节流 /returns public byte[] ImgToByte(Image img) using (MemoryStream ms = new MemoryStream()) byte[] imagedata = null; img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); imagedata = ms.GetBuffer(); return imagedata; catch (Exception ee) MessageBox.Show(ee.ToString()); return null; }
小注:
使用以上方法,快速滑动滑动条的时候,会出现卡死的现象,因为上述代码是每次实时读取图片资源的,应该加入一个图片路径、图片 字典,以减少图片的重复读取。
private void gridView1_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e) if (e.Column.FieldName == "Photo" e.IsGetData) string filePath = (string)((DataRowView)e.Row)["RefImage"]; if (!images.ContainsKey(filePath)) Image img = null; if (PubFunc.UrlDiscern(filePath)) if (FileUpDownload.RemoteFileExists(filePath)) using (WebClient wc = new WebClient()) //Bitmap bmtemp = new Bitmap(wc.OpenRead(filePath)); //img = new Bitmap(bmtemp, 75, 75); img = new Bitmap(wc.OpenRead(filePath)); else if (PubFunc.LocalFileExists(filePath)) img = Image.FromFile(filePath); images.Add(filePath, img); catch (Exception ex) MessageBox.Show(ex.ToString()); e.Value = images[filePath]; }
[UWP]实现Picker控件 原文:[UWP]实现Picker控件 1. 前言 在WPF中,很多打开下拉框(Popup或Flyout)选择一个结果值的控件,除了ComboBox等少数例外,这种控件都以-Picker做名称后缀。因为要打开关闭下拉框和计算下拉框的弹出位置, 这类控件实现起来还挺麻烦的。
Devexpress treelist 控件属性大全 属性列表 1、OptionsSelection: EnableAppearanceForcusedCell:选中的Cell的Appearance设置是否可用。默认为True; EnableAppearanceForcusedRow:选中的Node的Appearance设置是否可用。
uwp 图片切换动画 原文:uwp 图片切换动画 最近在学习安卓,LOL自定义战绩项目近乎停工,而且腾旭把界面全改了,好烦。刚好学习到安卓中的图片切换动画,我就想在LOL项目中实现一个。首先上百度查看一下,妈的,资料少的可怜。
UWP 使用Telerik Chart控件 原文:UWP 使用Telerik Chart控件 Telerik开发的chart功能异常强大 用户可以自行在商店搜索“UI for uwp demos”。 下面我就结合以下我的软件,来说明一下饼状图的实现。
对于QTableView中的显示,我们前面介绍过很多种,其中包括:文本、进度条、复选框等,今天我们介绍一下关于富文本的显示。 可能绝大多数小伙伴会通过QAbstractTableModel中的data来实现,可是现实告诉我们,那是行不通的,那么我们如何去显示呢?请看正文。
相关文章
- 图片加载失败后显示默认图片
- 图片加载出错后显示默认图片
- 解决python封装Logging模块后,log位置显示错误的问题
- 怎么判断摄像头开没开_qt获取控制台输出并显示
- Power BI表格显示图片的若干问题
- 微信小程序显示多个空格 适用表单对齐
- Github图片头像不显示?
- 【移动端网页布局】移动端网页布局基础概念 ④ ( 物理像素 | 物理像素比 | 代码示例 - 100 像素在 PC浏览器 / 移动端浏览器 显示效果 )
- Android ListView SimpleAdapter支持Bitmap类型图片显示详解手机开发
- Linux 显示所有目录:一步搞定(linux显示所有目录)
- javascript异步上传压缩图片并立即显示图片详解编程语言
- echo命令_Linux echo命令:显示文字并给文字添加颜色
- 如何快速利用Linux命令行解决显示问题(linux 命令行 显示)
- 卫星图像显示了美加州的干旱有多严重
- javascriptfirefox不显示本地预览图片问题的解决方法
- 上传图片时JS自动显示图片
- 报错:XML页无法显示,下列标记没有被关闭解决方法
- Android图片处理:识别图像方向并显示实例教程
- js调用图片隐藏&显示实现代码
- c#分页显示服务器上指定目录下的所有图片示例
- jquery通过visible来判断标签是否显示或隐藏