以文本方式查看主题

-  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