Почему не отображается значок кнопки ленты?

Я создал кнопку для добавления на ленту Revit, под Modify вкладка, под Properties Вкладка. Кнопка появляется и работает без проблем. Единственная проблема, с которой мы столкнулись, заключается в том, что значок кнопки не будет отображаться. Мы попробовали несколько подходов, чтобы исправить эту проблему, но, похоже, ничего не работает.

Код:

Autodesk.Windows.RibbonControl pRibbon = Autodesk.Windows.ComponentManager.Ribbon;
foreach (var pTab in pRibbon.Tabs)
{
    if (pTab.Id == "Modify")
    {
        foreach (var pPanel in pTab.Panels)
        {
            if (pPanel.Source.Id == "properties_shr")
            {
                // Add button.
                pIcon = Properties.Resources.AS_Revit_UI_Taps_Tees32x32.GetHbitmap();
                var pBtn = CreatePanelButton(pIcon, "Taps/Tees", "id_astapteebutton", "Taps/Tees", 32, 32);

                Autodesk.Windows.ComponentManager.UIElementActivated += RunSwitchTapTee;
                pPanel.Source.Items.Add(pBtn);
                break;
            }
        }
    }
}

public Autodesk.Windows.RibbonButton CreatePanelButton(IntPtr pIcon, string sBtnName, string sID, string sText, int iHeight, int iWidth)
{
    var pBtn = new Autodesk.Windows.RibbonButton()
    {
        Name = sBtnName,
        Image = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(pIcon, IntPtr.Zero, System.Windows.Int32Rect.Empty, BitmapSizeOptions.FromWidthAndHeight(32, 32)),
        Id = sID,
        AllowInStatusBar = true,
        AllowInToolBar = true,
        GroupLocation = Autodesk.Private.Windows.RibbonItemGroupLocation.Middle,
        MinHeight = 0,
        MinWidth = 0,
        Height = iHeight,
        Width = iWidth,
        IsEnabled = true,
        IsVisible = true,
        IsCheckable = true,
        ShowImage = true,
        ShowText = true,
        Orientation = System.Windows.Controls.Orientation.Vertical,
        Text = sText,
        Size = Autodesk.Windows.RibbonItemSize.Large,
        ResizeStyle = Autodesk.Windows.RibbonItemResizeStyles.HideText
    };

    return pBtn;
}

Результат таков:

Как видите, кнопка размещена. Работает как задумано. Это просто не показывает значок... Любая помощь будет оценена. Благодарю.

1 ответ

Решение

Я обнаружил, что моя ошибка была в настройке Image, Я написал:

Image = System.Windows.Interop....
.
.
.
Size = Autodesk.Windows.RibbonItemSize.Large,

Мне нужно настроить один или другой - либо Image в LargeImage или же RibbonItemSize.Large в RibbonItemSize.Standard...

Имеет смысл только то, что для больших изображений требуются большие размеры, а для стандартных изображений требуются стандартные размеры.

Какая разница?

В Revit кнопки на ленте могут иметь размер 16x16 пикселей (стандарт) или 32x32 пикселя (большой). В зависимости от желаемого макета пользовательского интерфейса поможет вам решить, что вам нужно.

Другие вопросы по тегам