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

Я создал кнопку для добавления на ленту 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;
}

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

введите здесь описание изображения

Как видите, кнопка установлена. Он работает по назначению. Он просто не будет показывать значок... Будем признательны за любую помощь. Спасибо.


person Uchiha Itachi    schedule 17.03.2017    source источник


Ответы (1)


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

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

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

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

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

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

person Uchiha Itachi    schedule 17.03.2017