예제 #1
0
        public static IconSource?ToIconSource(this IImageSource source, IMauiContext mauiContext)
        {
            IconSource?image = null;

            if (source is IFileImageSource fis)
            {
                image = new BitmapIconSource {
                    UriSource = new Uri("ms-appx:///" + fis.File)
                };
            }
            else if (source is IUriImageSource uri)
            {
                image = new BitmapIconSource {
                    UriSource = uri?.Uri
                };
            }
            else if (source is IFontImageSource fontImageSource)
            {
                image = new FontIconSource
                {
                    Glyph    = fontImageSource.Glyph,
                    FontSize = fontImageSource.Font.Size
                };

                if (fontImageSource.Color != null)
                {
                    image.Foreground = fontImageSource.Color.ToPlatform();
                }
                else
                {
                    image.Foreground = Colors.White.ToPlatform();
                }

                var fontManager   = mauiContext.Services.GetRequiredService <IFontManager>();
                var uwpFontFamily = fontManager.GetFontFamily(fontImageSource.Font);

                if (!string.IsNullOrEmpty(uwpFontFamily.Source))
                {
                    ((FontIconSource)image).FontFamily = uwpFontFamily;
                }
            }

            return(image);
        }
예제 #2
0
        public void InfoBadgeSupportsAllIconTypes()
        {
            InfoBadge          infoBadge          = null;
            SymbolIconSource   symbolIconSource   = null;
            PathIconSource     pathIconSource     = null;
            AnimatedIconSource animatedIconSource = null;
            BitmapIconSource   bitmapIconSource   = null;
            ImageIconSource    imageIconSource    = null;
            FontIconSource     fontIconSource     = null;

            RunOnUIThread.Execute(() =>
            {
                infoBadge               = new InfoBadge();
                symbolIconSource        = new SymbolIconSource();
                symbolIconSource.Symbol = Symbol.Setting;

                fontIconSource            = new FontIconSource();
                fontIconSource.Glyph      = "99+";
                fontIconSource.FontFamily = new FontFamily("XamlAutoFontFamily");

                bitmapIconSource = new BitmapIconSource();
                bitmapIconSource.ShowAsMonochrome = false;
                Uri bitmapUri = new Uri("ms-appx:/Assets/ingredient1.png");
                bitmapIconSource.UriSource = bitmapUri;

                imageIconSource             = new ImageIconSource();
                var imageUri                = new Uri("https://raw.githubusercontent.com/DiemenDesign/LibreICONS/master/svg-color/libre-camera-panorama.svg");
                imageIconSource.ImageSource = new SvgImageSource(imageUri);

                pathIconSource = new PathIconSource();
                var geometry   = new RectangleGeometry();
                geometry.Rect  = new Windows.Foundation.Rect {
                    Width = 5, Height = 2, X = 0, Y = 0
                };
                pathIconSource.Data = geometry;

                animatedIconSource        = new AnimatedIconSource();
                animatedIconSource.Source = new AnimatedSettingsVisualSource();

                Content = infoBadge;
                Content.UpdateLayout();
            });

            IdleSynchronizer.Wait();

            RunOnUIThread.Execute(() =>
            {
                Log.Comment("Switch to Symbol Icon");
                infoBadge.IconSource = symbolIconSource;
                Content.UpdateLayout();

                Log.Comment("Switch to Path Icon");
                infoBadge.IconSource = pathIconSource;
                Content.UpdateLayout();

                Log.Comment("Switch to Font Icon");
                infoBadge.IconSource = fontIconSource;
                Content.UpdateLayout();

                Log.Comment("Switch to bitmap Icon");
                infoBadge.IconSource = bitmapIconSource;
                Content.UpdateLayout();

                Log.Comment("Switch to Image Icon");
                infoBadge.IconSource = imageIconSource;
                Content.UpdateLayout();

                Log.Comment("Switch to Animated Icon");
                infoBadge.IconSource = animatedIconSource;
                Content.UpdateLayout();
            });
        }