예제 #1
0
        /// <summary>
        /// Renders an icon to a bitmap image using GDI+ API - positioning of icon isn't perfect, but aliasing is good. Good for small icons.
        /// </summary>
        /// <param name="icon">The icon</param>
        /// <param name="size">Size of destination bitmap in pixels</param>
        /// <param name="color">Icon color</param>
        /// <param name="rotation">Icon rotation in degrees</param>
        /// <param name="flip">Icon flip</param>
        /// <returns>The rendered bitmap</returns>
        public static Bitmap ToBitmap(this IconChar icon, Color?color = null,
                                      int size = DefaultSize, double rotation = 0.0, FlipOrientation flip = FlipOrientation.Normal)
        {
            var fontFamily = FontFamilyFor(icon);

            return(fontFamily.ToBitmap(icon, size, size, color, rotation, flip));
        }
예제 #2
0
        internal static Typeface TypefaceFor(IconChar iconChar, IconFont iconFont)
        {
            if (iconFont == IconFont.Auto)
            {
                return(TypefaceFor(iconChar));
            }
            var key = (int)iconFont;

            if (TypefaceForStyle.TryGetValue(key, out var typeFace))
            {
                return(typeFace);
            }
            if (!FontTitles.TryGetValue(key, out var name))
            {
                return(Throw($"No font loaded for style: {iconFont}"));
            }

            typeFace = Typefaces.FirstOrDefault(t => t.FontFamily.Source.EndsWith(name));
            if (typeFace == null)
            {
                return(Throw($"No font loaded for '{name}'"));
            }

            TypefaceForStyle.Add(key, typeFace);
            return(typeFace);
        }
예제 #3
0
        public static ImageSource ToImageSource(this IconChar iconChar,
                                                Brush foregroundBrush = null, double size = DefaultSize)
        {
            var text = char.ConvertFromUtf32((int)iconChar);

            return(ToImageSource(text, foregroundBrush ?? DefaultBrush, size));
        }
 public void Display_Icons(IconChar icon)
 {
     using (var pictureBox = new IconPictureBox {
         IconChar = icon
     })
         pictureBox.Image.Should().NotBeNull();
 }
예제 #5
0
        /// <summary>
        /// Renders an image for the specified font and icon
        /// </summary>
        /// <param name="iconChar">The icon to render</param>
        /// <param name="brush">The icon brush / color</param>
        /// <param name="size">The icon size in pixels</param>
        /// <returns>The rendered image</returns>
        public static ImageSource ToImageSource(this IconChar iconChar,
                                                Brush brush = null, double size = DefaultSize)
        {
            var typeFace = Typefaces.Find(iconChar, out var gt, out var glyphIndex);

            return(typeFace == null ? null : ToImageSource(brush, size, gt, glyphIndex));
        }
예제 #6
0
파일: Icon.cs 프로젝트: LuizJarduli/LP2
 public Icon(IconChar icon)
 {
     _iconBlock = new IconBlock
     {
         Icon = icon
     };
 }
예제 #7
0
        /// <summary>
        ///     Convert icon to bitmap image with GDI+ API - positioning of icon isn't perfect, but aliasing is good. Good for
        ///     small icons.
        /// </summary>
        public static Bitmap ToBitmap(this IconChar icon, int width, int height, Color color,
                                      double rotation = 0.0, FlipOrientation flip = FlipOrientation.Normal)
        {
            var fontFamily = FontFamilyFor(icon);

            return(fontFamily.ToBitmap(icon, width, height, color, rotation, flip));
        }
예제 #8
0
        public static ImageSource ToImageSource(this IconChar iconChar,
                                                Brush foregroundBrush = null, double size = DefaultSize)
        {
            var typeFace = TypefaceFor(iconChar.ToChar(), out var gt, out var glyphIndex);

            return(typeFace == null ? null : ToImageSource(foregroundBrush, size, gt, glyphIndex));
        }
예제 #9
0
        public static Icon Get(IconChar iconChar, Color color, int size = 16)
        {
            var    myBitmap = GetImage(iconChar, color, size);
            IntPtr Hicon    = myBitmap.GetHicon();

            return(Icon.FromHandle(Hicon));
        }
        public void Be_Creatable(IconChar icon)
        {
            var pictureBox = new IconPictureBox {
                IconChar = icon
            };

            pictureBox.Should().NotBeNull();
        }
예제 #11
0
        public void Support_Font_Styles()
        {
            // see issue #54
            const IconChar brandIcon = IconChar.GoogleDrive;
            var            bitmap    = brandIcon.ToBitmap(IconFont.Brands);

            bitmap.Should().BeOfType <Bitmap>($"an image should be generated for '{brandIcon}'");
        }
예제 #12
0
        public void Be_Creatable(IconChar icon)
        {
            var menuItem = new IconMenuItem {
                IconChar = icon
            };

            menuItem.Should().NotBeNull();
            menuItem.IconChar.Should().Be(icon);
        }
예제 #13
0
        public void Be_Creatable(IconChar iconChar)
        {
            var iconImage = new IconImage {
                Icon = iconChar
            };

            iconImage.Should().NotBeNull();
            iconImage.Icon.Should().Be(iconChar);
        }
        public void Support_Font_Styles(IconChar icon)
        {
            var bitmap = icon.ToImageSource(IconFont.Auto, IconHelper.DefaultBrush, 48);

            bitmap.Should().NotBeEmpty();

            bitmap = icon.ToImageSource(IconFont.Regular, IconHelper.DefaultBrush, 48);
            bitmap.Should().NotBeEmpty();
        }
예제 #15
0
        public void Be_Creatable(IconChar icon)
        {
            var button = new IconSplitButton {
                IconChar = icon
            };

            button.Should().NotBeNull();
            button.IconChar.Should().Be(icon);
        }
예제 #16
0
        public void Be_Creatable(IconChar iconChar)
        {
            var iconBlock = new IconBlock {
                Icon = iconChar
            };

            iconBlock.Should().NotBeNull();
            iconBlock.Icon.Should().Be(iconChar);
        }
예제 #17
0
        internal static FontFamily FontFamilyFor(IconChar iconChar)
        {
            var name = IconHelper.FontFor(iconChar)?.Source;

            if (name == null)
            {
                return(FallbackFont);
            }
            return(Fonts.Families.FirstOrDefault(f => name.EndsWith(f.Name)) ?? FallbackFont);
        }
예제 #18
0
        public void Be_Creatable(IconChar iconChar)
        {
            var iconSource = new IconSource(iconChar);

            iconSource.Should().NotBeNull();
            var serviceProvider = Substitute.For <IServiceProvider>();
            var imageSource     = (ImageSource)iconSource.ProvideValue(serviceProvider);

            imageSource.Should().NotBeNull();
        }
예제 #19
0
 public void Be_Creatable(IconChar icon)
 {
     using var formsIcon = new T();
     formsIcon.Should().NotBeNull();
     formsIcon.IconChar = icon;
     formsIcon.IconChar.Should().Be(icon);
     formsIcon.Image.Should().NotBeNull();
     formsIcon.ShouldSerializeImage().Should()
     .BeFalse("Image should not be serialized in .resx since generated");
 }
        public void Cache_equally_generated_bitmaps()
        {
            using var sut = new IconCache <IconChar>();
            const IconChar iconChar = IconChar.AddressBook;
            var            font     = iconChar.FontFamilyFor();
            var            bitmap1  = sut.Get(font, iconChar, 32, Color.Black, Color.Transparent);
            var            bitmap2  = sut.Get(font, iconChar, 32, Color.Black, Color.Transparent);

            bitmap2.Should().BeSameAs(bitmap1, "bitmaps with equal keys should not be recreated");
        }
예제 #21
0
        internal static FontFamily FontFamilyFor(IconChar iconChar)
        {
            var name = IconHelper.FontFor(iconChar)?.FamilyNames.Values.Single();

            if (name == null)
            {
                return(Fonts.Families[0]);
            }
            return(Fonts.Families.FirstOrDefault(f => name.StartsWith(f.Name)) ?? Fonts.Families[0]);
        }
예제 #22
0
        public AccountConfig()
        {
            InitializeComponent();
            IconChar icon = IconChar.UserEdit;

            //this.Icon = ConvertBitmapToBitmapImage.Convert(icon.ToBitmap(16, System.Drawing.Color.DarkGray));
            //this.Icon = ImageHelper.ImageSourceForBitmap(icon.ToBitmap(16, System.Drawing.Color.DarkGray));
            System.Windows.Media.Color indigo = Util.ConvertStringToColor("#FF4B0082");
            this.Icon = Util.mdIcons.ToImageSource <MaterialIcons>(MaterialIcons.Cogs, new SolidColorBrush(indigo), 18);
        }
        public void Be_Creatable(IconChar iconChar)
        {
            var converter = new IconToImageConverter();

            converter.Should().NotBeNull();
            var image = (IconImage)converter.Convert(iconChar, null, null, null);

            image.Should().NotBeNull();
            image.Icon.Should().Be(iconChar);
        }
예제 #24
0
        public void Be_Creatable(IconChar iconChar)
        {
            var markupExtension = new ToText(iconChar);

            markupExtension.Should().NotBeNull();
            var serviceProvider = Substitute.For <IServiceProvider>();
            var text            = markupExtension.ProvideValue(serviceProvider) as string;

            text.Single().Should().Be(iconChar.ToChar());
        }
예제 #25
0
        internal static FontFamily FontFor(IconChar iconChar)
        {
            if (Orphans.Contains(iconChar))
            {
                return(null);
            }
            var typeFace = TypefaceFor(iconChar.ToChar(), out _, out _);

            return(typeFace?.FontFamily);
        }
예제 #26
0
        /// <summary>
        /// Renders an image for the specified font, style and icon
        /// </summary>
        /// <param name="iconChar">The icon to render</param>
        /// <param name="iconFont">The icon font style</param>
        /// <param name="brush">The icon brush / color</param>
        /// <param name="size">The icon size in pixels</param>
        /// <returns>The rendered image</returns>
        public static ImageSource ToImageSource(this IconChar iconChar, IconFont iconFont,
                                                Brush brush = null, double size = DefaultSize)
        {
            var typeface = TypefaceFor(iconChar, iconFont);

            if (typeface == null)
            {
                return(null);
            }
            return(typeface.TryFind(iconChar.UniCode(), out var gt, out var glyphIndex) ? ToImageSource(brush, size, gt, glyphIndex) : null);
        }
예제 #27
0
        public void Be_Creatable(IconChar iconChar)
        {
            var iconSource = new IconSource(iconChar);

            iconSource.Should().NotBeNull();
            iconSource.Should().BeAssignableTo <IHaveIconFont>();
            iconSource.IconFont.Should().Be(IconFont.Auto);
            var serviceProvider = Substitute.For <IServiceProvider>();
            var imageSource     = (ImageSource)iconSource.ProvideValue(serviceProvider);

            imageSource.Should().NotBeNull();
        }
예제 #28
0
        /// <summary>
        ///     Get or create icon.
        /// </summary>
        /// <param name="icon">Icon to generate</param>
        /// <param name="size">Bitmap size in pixels</param>
        /// <param name="fore">Foreground color</param>
        /// <param name="back">Background color</param>
        /// <returns></returns>
        public Bitmap Get(IconChar icon, int size, Color fore, Color back)
        {
            var key = new IconKey(icon, size, fore, back);

            if (_cache.TryGetValue(key, out var bitmap))
            {
                return(bitmap);
            }
            bitmap      = icon.ToBitmapGdi(size, fore, back);
            _cache[key] = bitmap;
            return(bitmap);
        }
예제 #29
0
        public static Bitmap ToBitmap(this IconChar icon, int size, Color color)
        {
            var bitmap = new Bitmap(size, size);

            using (var graphics = Graphics.FromImage(bitmap))
            {
                var text  = char.ConvertFromUtf32((int)icon);
                var font  = GetAdjustedIconFont(graphics, text, size, size);
                var brush = new SolidBrush(color);
                DrawIcon(graphics, font, text, size, size, brush);
            }
            return(bitmap);
        }
예제 #30
0
        public void Be_Creatable(IconChar iconChar)
        {
            var markupExtension = new Icon(iconChar);

            markupExtension.Should().NotBeNull();
            // icon.Foreground.ToString().Should().Be("foo");

            var serviceProvider = Substitute.For <IServiceProvider>();
            var iconBlock       = markupExtension.ProvideValue(serviceProvider) as IconBlock;

            iconBlock.Should().NotBeNull();
            iconBlock.Icon.Should().Be(iconChar);
        }