Elight.Utility/Files/ICOGen/IconDir.cs
(开头部分) 7KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Text;
namespace Elight.Utility.Files.ICOGen
{
public class IconDir
{
private ushort idReserved = 0;
private ushort idType = 1;
private ushort idCount = 1;
private IList<IconDirentry> identries = new List<IconDirentry>();
public IconDir()
{
}
public IconDir(string iconFile)
{
FileStream fileStream = new FileStream(iconFile, FileMode.Open);
byte[] iconData = new byte[fileStream.Length];
fileStream.Read(iconData, 0, iconData.Length);
fileStream.Close();
LoadData(iconData);
}
/// <summary>
/// 读取ICO
/// </summary>
/// <param name="iconData"></param>
private void LoadData(byte[] iconData)
{
idReserved = BitConverter.ToUInt16(iconData, 0);
idType = BitConverter.ToUInt16(iconData, 2);
idCount = BitConverter.ToUInt16(iconData, 4);
if (idType != 1 || idReserved != 0) return;
int readIndex = 6;
for (ushort i = 0; i != idCount; i++)
{
identries.Add(new IconDirentry(iconData, ref readIndex));
}
}
/// <summary>
/// 保存ICO
/// </summary>
/// <param name="fileName"></param>
public Stream SaveData()
{
byte[] retByte;
if (ImageCount == 0) return null;
MemoryStream memoryStream = new MemoryStream();
byte[] temp = BitConverter.GetBytes(idReserved);
memoryStream.Write(temp, 0, temp.Length);
temp = BitConverter.GetBytes(idType);
memoryStream.Write(temp, 0, temp.Length);
temp = BitConverter.GetBytes((ushort)ImageCount);
memoryStream.Write(temp, 0, temp.Length);
for (int i = 0; i != ImageCount; i++)
后面还有 119 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。