public void Load(String fileName, PixelFormat format = PixelFormat.Format8bppIndexed) { FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); BinaryReader br = new BinaryReader(fs); UInt16 numSprites = br.ReadUInt16(); numSprites++; UInt16[] width = new UInt16[numSprites]; UInt16[] height = new UInt16[numSprites]; if (sprites == null) { sprites = new ArrayList(); } for (UInt16 i = 0; i < numSprites; i++) { width[i] = br.ReadUInt16(); } for (UInt16 i = 0; i < numSprites; i++) { height[i] = br.ReadUInt16(); } switch (format) { case PixelFormat.Format8bppIndexed: case PixelFormat.Indexed: if (pal == null) { // load a default palette pal = new PaletteFile(); } for (UInt16 i = 0; i < numSprites; i++) { try { Bitmap bmp = new Bitmap((int)(width[i]), (int)(height[i])); for (UInt16 y = 0; y < height[i]; y++) { for (UInt16 x = 0; x < width[i]; x++) { Byte col = br.ReadByte(); bmp.SetPixel(x, y, pal[col]); } } sprites.Add(bmp); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message); } } break; case PixelFormat.Format16bppRgb565: for (UInt16 i = 0; i < numSprites; i++) { Bitmap bmp = new Bitmap((width[i] / 2), height[i]); for (UInt16 y = 0; y < height[i]; y++) { for (UInt16 x = 0; x < (width[i] / 2); x++) { UInt16 w = br.ReadUInt16(); bmp.SetPixel(x, y, PixelFormatConverter.R5G6B5(w)); } } sprites.Add(bmp); } break; default: throw new ArgumentException("PixelFormat not supported."); } br.Close(); fs.Close(); }
private bool LoadImage(string FileName) { string FileExt = FileName.Substring(FileName.IndexOf(".")).ToLower(); string imgKey; if (FileExt == ".pal") { pal = new PaletteFile(FileName); panel1.Width = 180; panel1.Update(); return(true); } if (FileExt == ".img") { ImgFile imgf = new ImgFile(); string palFN = FileName.Substring(0, FileName.IndexOf(".")) + ".pal"; if (System.IO.File.Exists(palFN)) { pal = new PaletteFile(palFN); panel1.Width = 180; panel1.Update(); } imgf.PaletteFile = pal; imgf.Load(FileName); spriteView.BeginUpdate(); for (int idx = 0; idx < imgf.Count; idx++) { Bitmap bmp = imgf[idx]; imgKey = String.Format("Image{0}", key); key++; imageList1.Images.Add(imgKey, bmp); sprites.Add(bmp); spriteView.Items.Add(String.Format("{0}:{1}", FileName, idx), imgKey); } spriteView.EndUpdate(); imgf = null; return(true); } if (FileExt == ".hmg") { ImgFile imgf = new ImgFile(); imgf.Load(FileName, PixelFormat.Format16bppRgb565); spriteView.BeginUpdate(); for (int idx = 0; idx < imgf.Count; idx++) { Bitmap bmp = imgf[idx]; imgKey = String.Format("Image{0}", key); key++; imageList1.Images.Add(imgKey, bmp); sprites.Add(bmp); spriteView.Items.Add(string.Format("{0}:{1}", FileName, idx), imgKey); } spriteView.EndUpdate(); imgf = null; return(true); } Image sprite = null; try { sprite = Image.FromFile(FileName); } catch (Exception) { return(false); } imgKey = string.Format("Image{0}", key); key++; imageList1.Images.Add(imgKey, sprite); sprites.Add(sprite); spriteView.BeginUpdate(); spriteView.Items.Add(FileName, imgKey); spriteView.EndUpdate(); return(true); }
public ImgFile() { sprites = new ArrayList(); pal = null; palFN = ""; }