예제 #1
0
    /// <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);
    }
예제 #2
0
    /// <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);
    }