社区
C#
帖子详情
c# 添加图片后变色且大小变化
seetheone
2010-05-31 11:50:10
我 是从imagelist中读取图片的
要显示在listview中
先测试了一下
结果读出来的图片和原来的颜色不一样,颜色有了很多变化
而且大小也不太一样
急求解决方案!如能告诉原因最好!
...全文
339
14
打赏
收藏
c# 添加图片后变色且大小变化
我 是从imagelist中读取图片的 要显示在listview中 先测试了一下 结果读出来的图片和原来的颜色不一样,颜色有了很多变化 而且大小也不太一样 急求解决方案!如能告诉原因最好!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jieon
2010-06-01
打赏
举报
回复
图片像素位要跟原图一致。
summeryangyan
2010-06-01
打赏
举报
回复
up~~~~~~~~~~~~~~~~~~~~~~~~~
nolgbbenny
2010-06-01
打赏
举报
回复
学习学习中
doubledragon2010
2010-06-01
打赏
举报
回复
学习了。帮顶一下!!!!!1
happyboyxq1985
2010-06-01
打赏
举报
回复
帮顶,学习
捷哥1999
2010-06-01
打赏
举报
回复
2楼的解释不错。学习了。
缭绕飘渺
2010-06-01
打赏
举报
回复
学习了
没注意这个问题
siegebaoniu
2010-06-01
打赏
举报
回复
-2楼 学习
army369168520
2010-06-01
打赏
举报
回复
2楼UP!!
liji2009
2010-06-01
打赏
举报
回复
[Quote=引用 2 楼 ly302 的回复:]
详细的解释,有一篇文章,转贴给你,希望能有所帮助:
我把大家对于ImageList的问题归纳了一下,主要都是关于:
1.ImageList里面的图片的颜色
2.ImageList里面的图片的大小
引起ImageList里面图片颜色失真的原因是在Design-Time就在VS.NET中往ImageList里面添加了……
[/Quote]
说的很全
学习了
qiqishardgel
2010-06-01
打赏
举报
回复
学习了,帮顶!
兔子-顾问
2010-05-31
打赏
举报
回复
看看是不是色深变了。
皇城龙三
2010-05-31
打赏
举报
回复
详细的解释,有一篇文章,转贴给你,希望能有所帮助:
我把大家对于ImageList的问题归纳了一下,主要都是关于:
1.ImageList里面的图片的颜色
2.ImageList里面的图片的大小
引起ImageList里面图片颜色失真的原因是在Design-Time就在VS.NET中往ImageList里面添加了Images。
当用户一边在“Image Collection Editor”对话框里面添加图片,VS.NET一边就已经把这些图片装载到resource文件里面了。这样,以后程序运行时就只需要访问resource文件就可以载入所有图片而不需要依赖原始的图片文件。
但是问题在于从结果看,当VS.NET在Design-Time往resource文件里面添加图片时并没有使用用户指定的ColorDepth(例如 Depth32Bit),而用了ImageList.ColorDepth的默认值(Depth8Bit)。这样,等程序运行时,即使 ImageList.ColorDepth指定了Depth32Bit也无济于事,因为原始的素材本身只有8bit的颜色。这基本上就是waki的问题的原因。
因此,解决方案是:不在Design-Time用VS.NET往ImageList里面添加图片,而是在程序运行时先指定32Bit的ColorDepth,然后再添加图片,如以下例子代码:
this.imageList1.ColorDepth=ColorDepth.Depth32Bit;
this.imageList1.Images.Add(Image.FromFile(@"C:\Inetpub\wwwroot\winxp.gif"));
this.imageList1.Images.Add(Image.FromFile(@"C:\Inetpub\wwwroot\images\init_dotnet.gif"));
this.imageList1.Images.Add(Image.FromFile(@"C:\Inetpub\wwwroot\images\mslogo.gif"));
this.imageList1.Images.Add(Image.FromFile(@"C:\Inetpub\wwwroot\images\mslogo2.gif"));
这里需要注意的是,必须先指定ColorDepth,然后再添加图片。因为对ColorDepth赋值会清空所有图片。 BTW,ImageList.ColorDepth的默认值是Depth8Bit,而非文档上所述Depth4Bit。这一点很容易可以通过写一段例子代码来验证,也可以通过很多Decompiler来查看ImageList的构造函数的实现来验证。
的确,通过ImageList.Images获得图片的大小都是统一的,都等于ImageList.ImageSize。这个问题的原因在于 ImageList在返回Images的过程中并没有返回原始的图片,而是按照ImageList.ImageSize创建了一个新的 Bitmap,并把原始图片的内容重新绘制上去以后再返回给用户。关于这一点,可以用一些Decompiler工具如ILDASM.exe或者 Anakrino通过察看私有函数ImageList.GetBitmap(int index)来验证。我想现在paulluo0739应该能够理解为什么ImageList里面的图片都是一样大的了。
ImageSize同ColorDepth类似,也不宜在运行时改动,一旦重新赋值,就会清空所有的图片。因此,如果程序运行时需要某一图片的不同大小的版本,可以考虑使用多个不同ImageSize的ImageList。
希望以上这些能够对大家有帮助.
皇城龙三
2010-05-31
打赏
举报
回复
这个是老问题了,一般的回答是:
imagelist 加入图片后会出现图片失真问题,该问题引起的原因是ColorDepth,因为默认为8bit,将它改为32bit就能解决问题。
C#
编程经验技巧宝典
104 <br>0171 如何只允许输入指定
图片
格式 105 <br>0172 如何设置录入
图片
统一
图片
大小
105 <br>5.4 数组处理技巧 105 <br>0173 如何转换数组类型 105 <br>0174 如何复制数组中一系列元素的...
C#
源码大集合 03(共3卷)
C#
源码大集合 03(共3卷) <br>之前分为四个包,后两个包上传不了,对于已经下载的朋友表示赚意,现在重新再发一次(改为3卷) <br> ├─
C#
源码第一部分 │ ├─第1章 控件操作 │ │ ├─实例1 如何...
Visual
C#
.NET精彩编程实例集锦
实例23 如何监视文件和文件夹系统
变化
情况 实例24 如何加解密文件 实例25 如何切分组合文件 实例26 如何以流式方式读写文本文件 实例27 如何直接打印文件 实例28 如何操作帮助文件 实例29 如何操作Word文件 实例30 ...
C#
源码大集合 02(共3卷)
之前分为四个包,后两个包上传不了,对于已经下载的朋友表示赚意,现在重新再发一次(改为3卷) ├─
C#
源码第一部分 │ ├─第1章 控件操作 │ │ ├─实例1 如何使用错误提醒控件 │ │ ├─实例10 如何使用列表...
C#
源码大集合 01(共3卷)
C#
源码大集合 01(共3卷) <br>之前分为四个包,后两个包上传不了,对于已经下载的朋友表示赚意,现在重新再发一次(改为3卷) <br> ├─
C#
源码第一部分 │ ├─第1章 控件操作 │ │ ├─实例1 如何...
C#
110,580
社区成员
642,559
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章