以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- [求助]关于图片列在LISTVIEW中显示问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=91970)
|
-- 作者:沦落深蓝
-- 发布时间:2016/10/23 13:05:00
-- [求助]关于图片列在LISTVIEW中显示问题
对于图片列,存放目录和来源目录都已设置,通过代码自动将指定文件夹内的图片添加到图片列后,在TABLE中可以正常打开看见图片内容,
但是LISTVIEW在引用该图片时却是什么都没有,是空的,请问可能的原因~~~~
|
-- 作者:y2287958
-- 发布时间:2016/10/23 13:13:00
--
可以的,不成功最好上例子
|
-- 作者:沦落深蓝
-- 发布时间:2016/10/23 14:13:00
--
请问是不是图片太大的在LISTVIEW中就显示不了~~~之前的确没问题,LISTVIEW显示图片时会自动缩放吗~~
还有就是,引用的图片有格式要求吗~~~
[此贴子已经被作者于2016/10/23 14:28:12编辑过]
|
-- 作者:狐狸爸爸
-- 发布时间:2016/10/23 17:03:00
--
不成功,说明你的代码有误,通常是AddImage的时候,提供的图片路径或文件名有误。
图片格式一般没有要求,你可以用同样的图片,复制到某个目录,再复制一个foxtable自带的图片,用绝对路径测试一下,看看是否图片格式问题。
[此贴子已经被作者于2016/10/23 17:04:02编辑过]
|
-- 作者:沦落深蓝
-- 发布时间:2016/10/25 20:21:00
--
老师~~~出现了以下图片所示的情况,同时转移到XP系统的电脑上发现有时显示图片有时又不显示图片,实在费解,程序比较复杂且基本已经完成,上次实例比较困难,
可能是什么原因呢
此主题相关图片如下:无标题.png
代码我也算是比较了解了,也运用了好几次,几乎不可能有问题
Dim lvw As WinForm.ListView = e.Form.Controls("LV机械管理") lvw.StopRedraw() \'暂停绘制 lvw.Rows.Clear() \'清除原来的行 lvw.Images.Clear() \'清除原来的图片 lvw.View = ViewMode.Tile \'显示模式为平铺 lvw.Images.LargeSize = New Size(100,120) \'定义大图标尺寸 lvw.TitleSize = New Size(200,150) \'设置平铺区域的大小 Dim cls() As String = {"装备名称","装备型号","装备代号","装备编号","接装日期","装备状态","蓄电池型号"} \'定义列名 For i As Integer = 0 To cls.Length - 1 \'增加列 Dim c As WinForm.ListViewColumn = lvw.Columns.Add() c.Name = cls(i) \'指定列名 Next For Each zh As String In DataTables("装备数据库").GetValues("机械分类",,"序号") \'增加分组 Dim grp As WinForm.ListViewGroup = lvw.Groups.Add() grp.Name = zh grp.Text = zh Next For Each dr As DataRow In DataTables("装备数据库").DataRows \'从数据表中提取数据 Dim Key As String = dr("图片") \'获取此员工的照片文件 lvw.Images.AddLargeImage(Key, Key) \'添加照片,直接用文件名作为图片键值 Dim vr As WinForm.ListViewRow = lvw.Rows.Add() \'增加一行 vr.ToolTipText = dr("生产信息_生产厂家") \'设置此行的动态提示 vr.ImageKey = Key \'设置图片键值 vr.Group = dr("机械分类") vr.Font = New Font("微软雅黑",8) For Each cl As String In cls \'逐列取值 vr(cl) = dr(cl) Next vr.Tag = dr Next lvw.ResumeRedraw() \'恢复绘制
此主题相关图片如下:无标题2.png
[此贴子已经被作者于2016/10/25 20:21:54编辑过]
|
-- 作者:有点蓝
-- 发布时间:2016/10/25 20:31:00
--
上传例子不是让你把整个项目上传。把又问题的表(保留几行数据)、窗口和代码导出到一个新项目上传。学会做测试例子也是一种技能。
Dim Key As String = dr("图片") \'获取此员工的照片文件 lvw.Images.AddLargeImage(Key, Key) \'添加照片,直接用文件名作为图片键值
上面的key应该是相对路径,改为绝对路径(图片在电脑中的完整路径D:\\xxxx\\xxx.jpg)试试
|
-- 作者:沦落深蓝
-- 发布时间:2016/10/25 20:54:00
--
老师,经过测试的确是路径问题,如果不设置图片列的默认保存路径就能显示,
但是如果想将图片默认保存在 D:\\foxtable项目\\维修站信息管理系统(试用版)\\Reports\\1业务管理\\机械图片管理
中为什么就显示不出来呢
这么修改依然不行,显示不出图片
lvw.Images.AddLargeImage(Key, "D:\\foxtable项目\\维修站信息管理系统(试用版)\\Reports\\1业务管理\\机械图片管理\\C-01.jpg")
|
-- 作者:有点蓝
-- 发布时间:2016/10/25 21:02:00
--
不设置图片列的默认保存路径就能显示说明图片应该在Attachments里,而不是在D:\\foxtable项目\\维修站信息管理系统(试用版)\\Reports\\1业务管理\\机械图片管理
|
-- 作者:沦落深蓝
-- 发布时间:2016/10/25 21:18:00
--
老师,图片路径问题解决了,方法是在key中增加了该路径,没有直接引用路径
Dim Key As String = ProjectPath & "Reports\\1业务管理\\机械图片管理\\" & dr("图片")\'
但是出现了一个问题:
out of memory
明明就几十张图片,加载的很慢,而且还容易内存溢出,图片是相机拍的jpg,大概1M多,是不是要处理过再放进去才好,图片大小对计算能力影响那么大吗
如何才能使LISTVIEW实现快速显示,求解
[此贴子已经被作者于2016/10/25 21:18:22编辑过]
|
-- 作者:有点蓝
-- 发布时间:2016/10/25 21:22:00
--
图片是非常占资源的,不然为什么会有显卡这种玩意存在。
建议压缩使用缩略图显示 http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=89637 http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=84351
|