public void BmpRead16(string inputFileName) { int ofs = 0; FileStream inputFile = new FileStream(inputFileName, FileMode.Open); // byte[] bitmapFileHeader = new byte[sizeof(BITMAPFILEHEADER)]; // byte[] bitmapInfoHeader = new byte[sizeof(BITMAPINFOHEADER)]; // ofs += inputFile.Read(bitmapFileHeader, ofs, sizeof(BITMAPFILEHEADER)); // ofs += inputFile.Read(bitmapInfoHeader, ofs, sizeof(BITMAPFILEHEADER)); byte[] bitmapHeader = new byte[headerSize]; ofs += inputFile.Read(bitmapHeader, 0, (int)headerSize); int wx = (int)Utility.ExtractValueFromArray(bitmapHeader, 18, 4); int wy = (int)Utility.ExtractValueFromArray(bitmapHeader, 22, 4); int depth = (int)Utility.ExtractValueFromArray(bitmapHeader, 28, 2); int lineBytes = wx * depth / 8; int bufSize = lineBytes * bitmapDy; byte[] bitmapOneLine = new byte[bufSize]; for (int y = wy - 1 - bitmapDy; y >= 0; y -= bitmapDy) { // Debug.Print("y = " + y.ToString()); inputFile.Read(bitmapOneLine, 0, (int)bufSize); LCDDevice.BitBltEx(0, (uint)y, (uint)wx, (uint)bitmapDy, bitmapOneLine); Thread.Sleep(10); // Debug.GC(true); // Debug.EnableGCMessages(true); // Debug.Print(Debug.GC(true).ToString()); } inputFile.Close(); }
public static void Main() { Debug.Print("Mounting SD..."); StorageDevice.MountSD("SD", mod, pinSDCS); LCDDevice.Clear(); Program p = new Program(); while (true) { for (int i = 1; i <= 1; i++) { p.BmpRead16(@"\SD\MIF20120" + i.ToString() + "l.bmp"); Thread.Sleep(2000); } } }