⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 impalphablendingtransform.cs

📁 破解的飞信源代码
💻 CS
字号:
namespace Imps.Utils
{
    using System;
    using System.Drawing;
    using System.Drawing.Imaging;
    using System.IO;

    public class ImpAlphaBlendingTransform : IImageTransform
    {
        private float _percentage;

        public ImpAlphaBlendingTransform(float percentage)
        {
            this._percentage = percentage;
        }

        private static ImageCodecInfo GetEncoderInfo(string type)
        {
            ImageCodecInfo[] imageEncoders = ImageCodecInfo.GetImageEncoders();
            for (int i = 0; i < imageEncoders.Length; i++)
            {
                if (imageEncoders[i].MimeType == type)
                {
                    return imageEncoders[i];
                }
            }
            return null;
        }

        private IImage MakeImageTransparent(IImage image, float percentage)
        {
            if ((percentage < 0f) || (percentage > 1f))
            {
                throw new ArgumentOutOfRangeException("Percentage should between 0 and 1!");
            }
            Image image2 = image.Image;
            if (image.Image.PixelFormat != PixelFormat.Format32bppArgb)
            {
                IImage image3 = new BaseImage(new Bitmap(image.Width, image.Height, PixelFormat.Format32bppArgb));
                using (Graphics graphics = Graphics.FromImage(image3.Image))
                {
                    graphics.DrawImage(image.Image, 0, 0);
                }
                image = image3;
            }
            int num = (image.Width * image.Height) * 4;
            MemoryStream stream = new MemoryStream((num + (num / 0x1000)) + 300);
            ImageCodecInfo encoder = GetEncoderInfo("image/tiff");
            EncoderParameter parameter = new EncoderParameter(Encoder.Compression, (long) 6);
            EncoderParameters encoderParams = new EncoderParameters(1);
            encoderParams.Param[0] = parameter;
            try
            {
                image.Image.Save(stream, encoder, encoderParams);
            }
            catch (Exception exception)
            {
                throw exception;
            }
            int num2 = (int) (percentage * 32768f);
            byte[] buffer = stream.GetBuffer();
            for (int i = 11; i < (num + 8); i += 4)
            {
                buffer[i] = (byte) ((buffer[i] * num2) >> 15);
            }
            if (image != image2)
            {
                image.Dispose();
            }
            stream.Seek((long) 0, SeekOrigin.Begin);
            image = new BaseImage(new Bitmap(stream));
            return image;
        }

        public IImage Transform(IImage image)
        {
            return this.MakeImageTransparent(image, this._percentage);
        }

        public float Percentage
        {
            get
            {
                return this._percentage;
            }
            set
            {
                if ((value < 0f) || (value > 1f))
                {
                    throw new ArgumentOutOfRangeException("Percentage should between 0 and 1!");
                }
                this._percentage = value;
            }
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -