Сообщество программистов Autodesk в СНГ

ADN Club => Revit API => Тема начата: maksl от 19-12-2017, 09:53:57

Название: Размер иконок на панели
Отправлено: maksl от 19-12-2017, 09:53:57
Никак не могу добиться, чтобы иконки на панели были большие - 32х32.
Создаю кнопки так:

Код - C# [Выбрать]
  1.     static BitmapImage GetEmbeddedImage(Bitmap bMp)
  2.     {
  3.         MemoryStream ms = new MemoryStream();
  4.         bMp.Save(ms, ImageFormat.Png);
  5.  
  6.         BitmapImage b = new BitmapImage();
  7.         b.BeginInit();
  8.         b.StreamSource = ms;
  9.         b.EndInit();
  10.  
  11.         return b;
  12.     }
  13.  
  14. ...
  15.  
  16.         data = new PulldownButtonData("tech", "АТХ\nТХ");
  17.         item = rvtRibbonPanel.AddItem(data);
  18.         PulldownButton btnTh = item as PulldownButton;
  19.  
  20.         btnTh.Image = GetEmbeddedImage(ATX_R16_maksl_addins.Properties.Resources.atxLogo16);
  21.         btnTh.LargeImage = GetEmbeddedImage(ATX_R16_maksl_addins.Properties.Resources.atxLogo32);
  22. ...
  23.  
  24.  

atxLogo16 и atxLogo32 - png картинки в 256 цветов без компрессии.

Перелопатил кучу вариантов, ничего не помогает. :(
Получается всегда вот так:
(https://s33.postimg.org/m86y2nkzv/ribbon.jpg) (https://postimg.org/image/m86y2nkzv/)

Помогите разобраться, плз.
Название: Re: Размер иконок на панели
Отправлено: Александр Пекшев aka Modis от 19-12-2017, 09:57:19
Никак не могу добиться, чтобы иконки на панели были большие - 32х32
А что у вас получается?
Название: Re: Размер иконок на панели
Отправлено: Александр Пекшев aka Modis от 19-12-2017, 10:04:25
Ага - увидел картинку. Сразу не было
Во-первых - что для Автокада, что для Ревита - нужно использовать изображения размерами 16х16 и 32х32 пикселей с разрешением 96 пикселей на дюйм
(https://s8.postimg.org/n6yrf15cx/Screenshot_3.png) (https://postimg.org/image/n6yrf15cx/)
Во-вторых - все вот эти "извращения" с добавлением изображений к ресурсам проекта (в свойствах проекта), заданием свойства "внедренный ресурс" и целыми методами по извлечению не нужны )) Просто добавляйте к проекту нужное изображение и делайте его "Resource". Дальше просто задавайте Uri типа pack. Вот пример из рабочего проекта:
Код - C# [Выбрать]
  1. private void CreateRibbonTab(UIControlledApplication application)
  2.         {
  3.             RibbonPanel ribbonPanel = null;
  4.             bool hasPanel = false;
  5.             foreach (RibbonPanel panel in application.GetRibbonPanels())
  6.             {
  7.                 if (panel.Name.Equals("ModPlus"))
  8.                 {
  9.                     ribbonPanel = panel;
  10.                     hasPanel = true;
  11.                     break;
  12.                 }
  13.             }
  14.             // add new ribbon panel to add-ins tab
  15.             if (!hasPanel)
  16.                 ribbonPanel = application.CreateRibbonPanel("ModPlus");
  17.            
  18.             PushButtonData rid = new PushButtonData(
  19.                 "Dim Offset",
  20.                 "Dim Offset",
  21.                 Assembly.GetExecutingAssembly().Location,
  22.                 "mprDimBias.Application.MprDimBiasCommand")
  23.             {
  24.                 LargeImage = new BitmapImage(new Uri("pack://application:,,,/mprDimOffset;component/Resources/mprDimBias_32x32.png"))
  25.             };
  26.             if (ribbonPanel.AddItem(rid) is PushButton pushButton)
  27.             {
  28.                 pushButton.ToolTip =
  29.                     "The function monitors all the created and modified dimensions and, in case the dimensional text falls on dimensional lines it displaces the dimensional text aside";
  30.                 try
  31.                 {
  32.                     pushButton.SetContextualHelp(new ContextualHelp(ContextualHelpType.Url,
  33.                         Path.Combine(new FileInfo(Assembly.GetExecutingAssembly().Location).DirectoryName,
  34.                             "Help.html")));
  35.                 }
  36.                 catch
  37.                 {
  38.                     // ignore
  39.                 }
  40.             }
  41.         }
В третьих - при форматировании кода выбирайте C#

(https://s8.postimg.org/gt9obvnn5/Screenshot_4.png) (https://postimg.org/image/gt9obvnn5/)
Название: Re: Размер иконок на панели
Отправлено: Александр Пекшев aka Modis от 19-12-2017, 10:05:08
Да, забыл уточнить - использовать желательно изображения с расширением png
Название: Re: Размер иконок на панели
Отправлено: maksl от 19-12-2017, 11:28:00
Точно, все дело было в разрешении!
Спасибо.
И по остальным пунктам тоже принял на вооружение! :)