/// <summary> /// 指定したファイルから画像を読み込み、その /// System.Drawing.Bitmap を返す。 /// /// 画像の読み込み時には、System.FileSysを /// 利用するので、このファイルシステムにadd onされた /// アーカイバ等のなかのファイルであっても読める。 /// </summary> /// <param name="filename"></param> /// <returns></returns> static public Bitmap LoadToBitmap(string filename) { try { // 実在するなら、そのまま読み込めば良い string realfile = FileSys.IsRealExist(filename); if (realfile != null) { return(new Bitmap(realfile)); } // memory stream経由で読み込むように修正 byte[] data = FileSys.Read(filename); if (data == null) { return(null); } using (MemoryStream stream = new MemoryStream(data)) { return(new Bitmap(stream)); } } catch { } return(null); /* * Surface surface = new Surface(); * if (surface.Load(filename) != YanesdkResult.NoError) * return null; * * // Bitmap.FromHbitmap(surface.HBitmap);のほうがいいか? * * int w = surface.Width; * int h = surface.Height; * * Bitmap bitmap = new Bitmap(w,h); * BitmapData bmpdata; * if (surface.CheckRGB888()) * { * bmpdata = bitmap.LockBits(new Rectangle(0, 0, w, h), * ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); * * // 画像コピー * unsafe * { * // 最悪なのことにalignされている(´ω`) * * byte* dst = (byte*)bmpdata.Scan0; * int dst_pitch = bmpdata.Stride; * byte* src = (byte*)surface.Pixels; * int src_pitch = surface.Pitch; * * for (int y = 0; y < h; ++y) * { * for (int i = 0; i < w * 3; i += 3) * { * // しかもR,G,B逆かよ!(`ω´) * dst[i + 0] = src[i + 2]; * dst[i + 1] = src[i + 1]; * dst[i + 2] = src[i + 0]; * } * src += src_pitch; * dst += dst_pitch; * } * } * } * else * { * bmpdata = bitmap.LockBits(new Rectangle(0, 0, w, h), * ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb); * * // 画像コピー * unsafe * { * // 最悪なのことにalignされている(´ω`) * * byte* dst = (byte*)bmpdata.Scan0; * int dst_pitch = bmpdata.Stride; * byte* src = (byte*)surface.Pixels; * int src_pitch = surface.Pitch; * * for (int y = 0; y < h; ++y) * { * for (int i = 0; i < w * 4; i += 4) * { * // しかもR,G,B逆かよ!(`ω´) * dst[i + 0] = src[i + 2]; * dst[i + 1] = src[i + 1]; * dst[i + 2] = src[i + 0]; * dst[i + 3] = src[i + 3]; * } * src += src_pitch; * dst += dst_pitch; * } * } * } * * bitmap.UnlockBits(bmpdata); * * return bitmap; */ }