예제 #1
0
        private Bitmap InternalLoadBitmap(Frame frame)
        {
            var           imgFile = Path.Combine(_Path, _File.Images[frame.SpriteID]);
            AbstractImage img     = null;
            Bitmap        ret;

            try
            {
                if (Path.GetExtension(imgFile) == ".dds")
                {
                    if (File.Exists(imgFile))
                    {
                        img = new DDSImage(imgFile);
                    }
                }
                else if (Path.GetExtension(imgFile) == ".bmp" ||
                         Path.GetExtension(imgFile) == ".cv2" ||
                         Path.GetExtension(imgFile) == ".png")
                {
                    var imgFileCV2 = Path.ChangeExtension(imgFile, ".cv2");
                    if (File.Exists(imgFileCV2))
                    {
                        img = new CV2Image(imgFileCV2);
                    }
                }
                if (img == null)
                {
                    return(null);
                }
                var rect = new Rectangle(frame.ViewOffsetX, frame.ViewOffsetY,
                                         frame.ViewWidth, frame.ViewHeight);
                ret = img.ToBitmap(_Palette, rect);
            }
            finally
            {
                if (img != null)
                {
                    try
                    {
                        img.Dispose();
                    }
                    catch
                    {
                    }
                }
            }
            if (frame.ImageManipulation != null && frame.ImageManipulation.AlphaBlend != 0)
            {
                AbstractImage.MakeAlphaBlendBitmap(ret);
            }
            return(ret);
        }
        private AbstractImage LoadResource(string res)
        {
            AbstractImage ret;

            if (cachedResource.TryGetValue(res, out ret))
            {
                return(ret);
            }

            if (Path.GetExtension(res) == ".dds")
            {
                ret = new DDSImage(res);
            }
            else if (Path.GetExtension(res) == ".cv2")
            {
                ret = new CV2Image(res);
            }

            //add it even if it's null (avoid keep trying)
            cachedResource.Add(res, ret);

            return(ret);
        }