예제 #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="b"></param>
        /// <param name="storeInVideoMemory"></param>
        /// <param name="keyColor"></param>
        /// <returns></returns>
        public ISprite LoadSprite(BitmapBuilder b, bool storeInVideoMemory, Color keyColor)
        {
            if (!AllowLoadTextures)
            {
                throw new InvalidOperationException("Loading sprites is only allowed inside the LoadSprites event");
            }
            Format format = Format.A8R8G8B8;

            if (keyColor == System.Drawing.Color.Transparent)
            {
                format = Format.R8G8B8;
            }

            Bitmap bmp = new Bitmap(b.GetStream());
            int    w = (int)(b.Width * XRatio), h = (int)(b.Height * YRatio);

            if (keyColor != Color.Transparent)
            {
                bmp.MakeTransparent(keyColor);
            }
            bmp = new Bitmap(bmp, w, h);
            using (MemoryStream s = new MemoryStream())
            {
                bmp.Save(s, System.Drawing.Imaging.ImageFormat.Bmp);
                bmp.Dispose();
                s.Seek(0, SeekOrigin.Begin);

                return(new SDXSprite(Texture.FromStream(Device, s, w, h, 0, Usage.None, format,
                                                        storeInVideoMemory ? Pool.Managed : Pool.Managed, Filter.None, Filter.None, keyColor.ToArgb())));
            }
            //return new SDXSprite(Texture.FromMemory(Device, b.BitmapData, (int)b.Width, (int)b.Height, 0, Usage.None, format,
            //		storeInVideoMemory ? Pool.Default : Pool.Managed, Filter.None, Filter.None, keyColor.ToArgb()));
        }
예제 #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="b"></param>
        /// <param name="storeInVideoMemory"></param>
        /// <param name="keyColor"></param>
        /// <returns></returns>
        public ISprite LoadSprite(BitmapBuilder b, bool storeInVideoMemory, Color keyColor)
        {
            Bitmap bitmap = new Bitmap(b.GetStream());

            bitmap.MakeTransparent(keyColor);
            return(new Sprite(bitmap));
        }