首页 新闻 会员 周边

C# 读取ico图片问题

0
悬赏园豆:10 [已解决问题] 解决于 2020-11-19 09:43

this.pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;

string curFileName = @"Acrobat.ico";

Bitmap bitmap = new Bitmap(curFileName);

  MessageBox.Show(string.Format("{0}:{1}", bitmap.Width, bitmap.Height));
        this.pictureBox1.Image = bitmap;

       MessageBox.Show("加载完成!");
        MessageBox.Show(string.Format("{0}:{1}", pictureBox1.Image.Width, pictureBox1.Image.Height));

图片实际 大小

为什么 读取 的 Bitmap 大小是 16x16 ; ???

enych的主页 enych | 初学一级 | 园豆:76
提问于:2020-11-17 11:21
< >
分享
最佳答案
0

ico图标并不是单单的一张图片,而是好几张图片的集合,集合中的图片尺寸都不一样。使用C#直接读取ico文件时默认取的都是的尺寸最小的那个图片。
所以如果想通过C#去读取到ico中256*256这种大尺寸图片的,需要使用系统API去读取。

收获园豆:10
leslie_xin | 菜鸟二级 |园豆:404 | 2020-11-19 09:21

enych | 园豆:76 (初学一级) | 2020-11-19 09:41
其他回答(2)
0

使用PictureBoxSizeMode.Zoom导致图片伸缩了,将PictureBoxSizeMode改为CenterImage或AutoSize试下

E行者 | 园豆:1761 (小虾三级) | 2020-11-17 11:46

不是 , 为什么读取 之后 就是 16x16 像素了
加载到图片后 才是正常像素;

支持(0) 反对(0) enych | 园豆:76 (初学一级) | 2020-11-17 11:48

@enych: ico文件大小由系统决定,它跟png文件不同,用Icon类替代Bitmap类结果可能不同

支持(0) 反对(0) E行者 | 园豆:1761 (小虾三级) | 2020-11-17 13:05
0

使用 KaitaiStruct.cs和KaitaiStream.cs 来解析 icon

enych | 园豆:76 (初学一级) | 2020-11-19 09:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册