/// <summary> /// liest das Bitmap ein /// </summary> /// <param name="bitmap">Bild, welches gelesen werden soll</param> /// <param name="size">erkannte Größe des Bilder</param> /// <param name="data">eingelesene Pixel-Daten</param> static void ReadBitmap(Bitmap bitmap, out SizeInt size, out uint[] data) { size = new SizeInt(bitmap.Width, bitmap.Height); data = new uint[size.w * size.h]; var bData = bitmap.LockBits(new Rectangle(0, 0, size.w, size.h), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb); if (size.w * sizeof(uint) != bData.Stride) throw new Exception("inavlid stride-size"); Unsafe.CopyMemory(Marshal.UnsafeAddrOfPinnedArrayElement(data, 0), bData.Scan0, data.Length * sizeof(uint)); bitmap.UnlockBits(bData); }
/// <summary> /// Konstruktor /// </summary> /// <param name="skinFile">Skin-Datei welche geladen werden soll</param> public DrawSkin(string skinFile) { spriteBitmap = new RawBitmap(skinFile); int spriteWidth = spriteBitmap.Width / 7; int spriteHeight = spriteBitmap.Height / 8; if (spriteWidth != spriteHeight) throw new Exception("Skin-Format Error"); spriteSize = new SizeInt(spriteWidth, spriteHeight); }