コード例 #1
0
        public void CreateFrom(string fileName, IconOutputFormat format)
        {
            Bitmap bmp = (Bitmap)Bitmap.FromFile(fileName);

            if (bmp == null)
            {
                throw new InvalidFileException();
            }

            try
            {
                CreateFrom(bmp, format);
            }
            finally
            {
                bmp.Dispose();
            }
        }
コード例 #2
0
        static private bool SaveLocalIcon(string localIconPath, Bitmap iconBitmap)
        {
            try
            {
                MultiIcon  bmIcon = new MultiIcon();
                SingleIcon bsIcon = bmIcon.Add("Icon 1");

                IconOutputFormat outputFormat = IconOutputFormat.None; // Save icon as is

                bsIcon.CreateFrom(iconBitmap, outputFormat);
                bsIcon.Save(localIconPath);
            }
            catch (Exception e)
            {
                return(false);
            }

            return(true);
        }
コード例 #3
0
        public void CreateFrom(Bitmap bitmap, IconOutputFormat format)
        {
            Bitmap          bmp            = null;
            IconImage       iconImage      = null;
            IColorQuantizer colorQuantizer = new EuclideanQuantizer();

            if (bitmap.PixelFormat != PixelFormat.Format32bppArgb)
            {
                throw new InvalidPixelFormatException(PixelFormat.Undefined, PixelFormat.Format32bppArgb);
            }

            mIconImages.Clear();

            if (format == IconOutputFormat.None)
            {
                Add(bitmap); return;
            }

            // Vista
            // 256x256x32
            if ((format & IconOutputFormat.Vista) == IconOutputFormat.Vista)
            {
                Add(bitmap);
            }

            try
            {
                if ((format & IconOutputFormat.WinXPUnpopular) == IconOutputFormat.WinXPUnpopular)
                {
                    bmp       = ResizeBitmap(bitmap, 64, 64);
                    iconImage = Add(bmp); // XP
                    bmp.Dispose();
                }
            }
            catch (Exception e) { }

            try
            {
                bmp = ResizeBitmap(bitmap, 48, 48);
                if ((format & IconOutputFormat.WinXP) == IconOutputFormat.WinXP)
                {
                    iconImage = Add(bmp); // XP
                }
                if ((format & IconOutputFormat.Win95) == IconOutputFormat.Win95)
                {
                    Add(colorQuantizer.Convert(bmp, PixelFormat.Format8bppIndexed), iconImage.Mask); // W95
                }
                if ((format & IconOutputFormat.Win31) == IconOutputFormat.Win31)
                {
                    Add(colorQuantizer.Convert(bmp, PixelFormat.Format4bppIndexed), iconImage.Mask); // W95
                }
                bmp.Dispose();
            }
            catch (Exception e) { }

            // NOTE: Add support for "IconOutputFormat.WinXP32Only"
            try
            {
                bmp = ResizeBitmap(bitmap, 32, 32);
                if ((format & IconOutputFormat.WinXP) == IconOutputFormat.WinXP)
                {
                    iconImage = Add(bmp); // XP
                }
                if ((format & IconOutputFormat.Win95) == IconOutputFormat.Win95)
                {
                    Add(colorQuantizer.Convert(bmp, PixelFormat.Format8bppIndexed), iconImage.Mask); // W95
                }
                if ((format & IconOutputFormat.Win31) == IconOutputFormat.Win31)
                {
                    Add(colorQuantizer.Convert(bmp, PixelFormat.Format4bppIndexed), iconImage.Mask); // W31
                }
                if ((format & IconOutputFormat.Win30) == IconOutputFormat.Win30)
                {
                    Add(colorQuantizer.Convert(bmp, PixelFormat.Format1bppIndexed), iconImage.Mask); // W30
                }
                bmp.Dispose();
            }
            catch (Exception e) { }

            try
            {
                bmp = ResizeBitmap(bitmap, 24, 24);
                if ((format & IconOutputFormat.WinXPUnpopular) == IconOutputFormat.WinXPUnpopular)
                {
                    iconImage = Add(bmp); // XP
                }
                if ((format & IconOutputFormat.Win95Unpopular) == IconOutputFormat.Win95Unpopular)
                {
                    Add(colorQuantizer.Convert(bmp, PixelFormat.Format8bppIndexed), iconImage.Mask); // W95
                }
                if ((format & IconOutputFormat.Win31Unpopular) == IconOutputFormat.Win31Unpopular)
                {
                    Add(colorQuantizer.Convert(bmp, PixelFormat.Format4bppIndexed), iconImage.Mask); // W31
                }
                if ((format & IconOutputFormat.Win30) == IconOutputFormat.Win30)
                {
                    Add(colorQuantizer.Convert(bmp, PixelFormat.Format1bppIndexed), iconImage.Mask); // W30
                }
                bmp.Dispose();
            }
            catch (Exception e) { }

            try
            {
                bmp = ResizeBitmap(bitmap, 16, 16);
                if ((format & IconOutputFormat.WinXP) == IconOutputFormat.WinXP)
                {
                    iconImage = Add(bmp); // XP
                }
                if ((format & IconOutputFormat.Win95) == IconOutputFormat.Win95)
                {
                    Add(colorQuantizer.Convert(bmp, PixelFormat.Format8bppIndexed), iconImage.Mask); // W95
                }
                if ((format & IconOutputFormat.Win31) == IconOutputFormat.Win31)
                {
                    Add(colorQuantizer.Convert(bmp, PixelFormat.Format4bppIndexed), iconImage.Mask); // W31
                }
                if ((format & IconOutputFormat.Win30) == IconOutputFormat.Win30)
                {
                    Add(colorQuantizer.Convert(bmp, PixelFormat.Format1bppIndexed), iconImage.Mask); // W30
                }
                bmp.Dispose();
            }
            catch (Exception e) { }
        }