Где взять стандартные иконки команд

Автор Тема: Где взять стандартные иконки команд  (Прочитано 12529 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн avcАвтор темы

  • ADN Club
  • *****
  • Сообщений: 839
  • Карма: 168
    • Мои плагины к Автокаду
Вот так работает:
Код - C# [Выбрать]
  1.    
  2.     internal static bool DarkTheme
  3.     {
  4.       get => AcadApp.Version.Major >= 20 && (short)AcadApp.GetSystemVariable("COLORTHEME") == 0;
  5.     }
  6.  
  7.     internal static Bitmap BuiltinBitmap(string Name)
  8.     {
  9.       string lib = AcadApp.Version.Major < 20 || DarkTheme ? "acadbtn.xmx" : "acadbtn_light.xmx";
  10.       string filename = System.Windows.Forms.Application.ExecutablePath.Replace("acad.exe", lib);
  11.       return ResourceManager.GetBitmap(filename, Name, ResourceManager.RC_RCDATA);
  12.     }
  13.  
  14. [CommandMethod("IconTest")]
  15.     public static void IconTestCommand()
  16.     {
  17.       Document doc = AcadApp.DocumentManager.MdiActiveDocument;
  18.       Editor ed = doc.Editor;
  19.       PromptStringOptions pso = new PromptStringOptions("Image name? "){
  20.        AllowSpaces = false, DefaultValue = "RCDATA_16_ABOUT" };
  21.       PromptResult pr = ed.GetString(pso);
  22.       if (pr.Status != PromptStatus.OK) return;
  23.       Bitmap bmp = BuiltinBitmap(pr.StringResult);
  24.       if (bmp == null)
  25.       {
  26.         ed.WriteMessage("\nBitmap not loaded\n");
  27.         return;
  28.       }
  29.       using Form f = new Form() {
  30.         Name = "Test",
  31.         Text = "Test",
  32.         MinimumSize = new Size(32, 32),
  33.         FormBorderStyle = FormBorderStyle.SizableToolWindow };
  34.       PictureBox box = new PictureBox() {
  35.         Name = "box",
  36.         Dock = DockStyle.Fill,  
  37.         SizeMode = PictureBoxSizeMode.CenterImage,
  38.         Image = bmp  };
  39.       f.Controls.Add(box);
  40.       f.ShowDialog();
  41.     }

Отмечено как Решение avc 04-11-2020, 14:24:17

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13898
  • Карма: 1790
  • Рыцарь ObjectARX
  • Skype: rivilis
avc,
Оказывается можно еще проще:
Код - C# [Выбрать]
  1. System.Drawing.Icon ico = Autodesk.AutoCAD.Internal.Utils.GetAcadResourceIcon("имя ресурса");
Для проверки:
Код - C# [Выбрать]
  1. public void GetIconWithId() // This method can have any name
  2. {
  3.   Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
  4.   Editor ed = doc.Editor;
  5.   System.Drawing.Icon ico = Autodesk.AutoCAD.Internal.Utils.GetAcadResourceIcon("RCDATA_32_BLOCK");
  6.   ed.WriteMessage("Icon size = {0}", ico.Size);
  7.   using (System.Windows.Forms.Form f = new System.Windows.Forms.Form()
  8.   {
  9.     Name = "Test", Text = "Test",
  10.     MinimumSize = new System.Drawing.Size(32, 32),
  11.     FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow
  12.   })
  13.   {
  14.     System.Windows.Forms.PictureBox box = new System.Windows.Forms.PictureBox()
  15.     {
  16.       Name = "box",
  17.       Dock = System.Windows.Forms.DockStyle.Fill,
  18.       SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage,
  19.       Image = ico.ToBitmap()
  20.     };
  21.     f.Controls.Add(box);
  22.     f.ShowDialog();
  23.   }
  24. }
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение