示例#1
0
        public SolutionImageToggle(BaseSolutionInfo solutionInfo, int buttonWidth)
        {
            SolutionInfo = solutionInfo;

            Int32 imageHeight;

            if (String.Equals(Path.GetExtension(SolutionInfo.ToggleImagePath), ".svg", StringComparison.OrdinalIgnoreCase))
            {
                var svgBitmap = SvgBitmap.FromFile(SolutionInfo.ToggleImagePath);
                imageHeight = (Int32)(svgBitmap.SvgImage.Height * (buttonWidth / svgBitmap.SvgImage.Width));
                Image       = svgBitmap.Render(null, 1.0D);
            }
            else
            {
                var pngImage = Image.FromFile(SolutionInfo.ToggleImagePath);
                imageHeight = (Int32)(pngImage.Height * (buttonWidth / pngImage.Width));
                Image       = pngImage;
            }

            Height = imageHeight;

            Enabled = solutionInfo.Enabled;
        }
        private void InitTiles()
        {
            metroTilePanelMain.LayoutOrientation = eOrientation.Vertical;

            foreach (var tileGroup in CustomTabInfo.Tiles.Groups)
            {
                var itemContainer = new ItemContainer
                {
                    MultiLine   = true,
                    Orientation = eOrientation.Vertical
                };

                if (!String.IsNullOrWhiteSpace(tileGroup.Title))
                {
                    itemContainer.TitleVisible  = true;
                    itemContainer.Text          =
                        itemContainer.TitleText = tileGroup.Title;
                    if (tileGroup.Font != null)
                    {
                        itemContainer.TitleStyle.Font = tileGroup.Font;
                    }
                    if (tileGroup.ForeColor != Color.Empty)
                    {
                        itemContainer.TitleStyle.TextColor = tileGroup.ForeColor;
                    }
                }
                else
                {
                    itemContainer.TitleVisible = false;
                }

                foreach (var tileItem in tileGroup.Items)
                {
                    var item = new MetroTileItem();
                    item.TitleText     = tileItem.Title;
                    item.Tooltip       = tileItem.Tooltip;
                    item.CheckBehavior = eMetroTileCheckBehavior.None;

                    if (!String.IsNullOrWhiteSpace(tileItem.ImagePath))
                    {
                        var extension = Path.GetExtension(tileItem.ImagePath);
                        if (String.Equals(extension, ".svg", StringComparison.OrdinalIgnoreCase))
                        {
                            var svgBitmap = SvgBitmap.FromFile(tileItem.ImagePath);
                            item.Image = svgBitmap.Render(null, 1.0D);
                        }
                        else
                        {
                            item.Image = Image.FromFile(tileItem.ImagePath);
                        }
                    }

                    if (tileItem.TextAlignment.HasValue)
                    {
                        item.TitleTextAlignment = tileItem.TextAlignment.Value;
                    }

                    if (!tileItem.Size.IsEmpty)
                    {
                        item.TileSize = tileItem.Size;
                    }
                    else if (item.Image != null)
                    {
                        item.TileSize = item.Image.Size;
                    }

                    item.TileColor = tileItem.BackColor;

                    if (!tileItem.ImageIdent.IsEmpty)
                    {
                        item.ImageIndent = tileItem.ImageIdent;
                    }

                    if (!tileItem.ForeColor.IsEmpty)
                    {
                        item.TitleTextColor = tileItem.ForeColor;
                    }

                    if (tileItem.Font != null)
                    {
                        item.TitleTextFont = tileItem.Font;
                    }

                    item.Click += (o, args) =>
                    {
                        try
                        {
                            Process.Start(tileItem.GetExecutablePath());
                        }
                        catch { }
                    };
                    itemContainer.SubItems.Add(item);
                }
                metroTilePanelMain.Items.Add(itemContainer);
            }

            metroTilePanelMain.Invalidate();
        }