-->

C# 读取ico图片问题

2020-11-19 08:57发布

问题:

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 ; ???

回答1:

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



回答2:

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



回答3:

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