ToolTip и GIF

Автор Тема: ToolTip и GIF  (Прочитано 9021 раз)

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

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

  • ADN OPEN
  • ****
  • Сообщений: 379
  • Карма: 21
ToolTip и GIF
« : 24-05-2020, 00:12:03 »
Всех приветствую.
Кто-то пробовал вставлять gif-анимацию в ToolTip на ленте? У меня пока получилось только покадрово читать gif файл.

У меня ещё появился доп. вопрос - что за свойство "ExpandedVideo" есть у класса RibbonToolTip в VisualStudio, но нигде я не могу найти информацию по нему?
« Последнее редактирование: 24-05-2020, 00:49:20 от Lemieux »

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: ToolTip и GIF
« Ответ #1 : 24-05-2020, 00:58:36 »
Вряд ли этим кто-то занимался. Насколько я помню ToolTip'ы используют XAML. В чистом виде XAML не поддерживает gif-анимацию.
Нашел такую библиотеку для отображения gif-анимации в XAML: https://github.com/XamlAnimatedGif
Попробуй. Может что-нибудь и получится.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение Lemieux 24-05-2020, 01:09:56

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: ToolTip и GIF
« Ответ #2 : 24-05-2020, 01:05:57 »
У меня ещё появился доп. вопрос - что за свойство "ExpandedVideo" есть у класса RibbonToolTip в VisualStudio, но нигде я не могу найти информацию по нему?
А вот это оказывается делал Виктор Чекалин. Правда для Revit, но для AutoCAD должно быть аналогично:
https://thebuildingcoder.typepad.com/blog/2012/09/video-animated-ribbon-item-tooltip.html
Но это у него не gif, а swf. Впрочем наверное возможна и другая анимация.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ****
  • Сообщений: 379
  • Карма: 21
Re: ToolTip и GIF
« Ответ #3 : 24-05-2020, 01:09:54 »
У меня ещё появился доп. вопрос - что за свойство "ExpandedVideo" есть у класса RibbonToolTip в VisualStudio, но нигде я не могу найти информацию по нему?
А вот это оказывается делал Виктор Чекалин. Правда для Revit, но для AutoCAD должно быть аналогично:
https://thebuildingcoder.typepad.com/blog/2012/09/video-animated-ribbon-item-tooltip.html
Но это у него не gif, а swf. Впрочем наверное возможна и другая анимация.
Тоже наткнулся на этот пост и уже конвертирую swf  :)

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

  • ADN OPEN
  • ****
  • Сообщений: 379
  • Карма: 21
Re: ToolTip и GIF
« Ответ #4 : 24-05-2020, 02:33:27 »
К сожалению не работает.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: ToolTip и GIF
« Ответ #5 : 24-05-2020, 03:15:21 »
Если подготовить тестовый проект - постараюсь помочь.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ****
  • Сообщений: 379
  • Карма: 21
Re: ToolTip и GIF
« Ответ #6 : 24-05-2020, 03:22:15 »
Если подготовить тестовый проект - постараюсь помочь.
Что от меня нужно? Тестовая лента с элементом где должен быть анимированный ToolTip?

Вообще странно, что не воспроизводит swf. Ладно я сам конвертировал, но я брал фал из ссылки, которую Вы приложили и он так же не работал.
А Gif я пробовал воспроизвести через создание Bitmap и Imageanimator.animate.

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

  • ADN OPEN
  • ****
  • Сообщений: 379
  • Карма: 21
Re: ToolTip и GIF
« Ответ #7 : 24-05-2020, 03:26:28 »
И как авторы программы запихали bullets в ToolTips? У меня что-то не получается через unicod или xml.


Кстати, ещё интересное наблюдение. Разработчики зачем-то сделали возможность разворачиваться "ExpandedImage" во весь экран, но при этом быть узкой относительно высоты. И если туда вставлять большое изображение, то оно отображается в масштабе, но обрезается по этим узки границам.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: ToolTip и GIF
« Ответ #8 : 24-05-2020, 14:32:32 »
Что от меня нужно? Тестовая лента с элементом где должен быть анимированный ToolTip?
Полный проект, в котором ты создаешь элемент с попыткой назначить ему анимированный ToolTip.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: ToolTip и GIF
« Ответ #9 : 24-05-2020, 14:52:29 »
Вряд ли этим кто-то занимался. Насколько я помню ToolTip'ы используют XAML. В чистом виде XAML не поддерживает gif-анимацию.
Нашел такую библиотеку для отображения gif-анимации в XAML: https://github.com/XamlAnimatedGif
Попробуй. Может что-нибудь и получится.
Именно так и только с помощью именно этой библиотеки у меня получилось сделать анимашку в подсказке на ленте. Можно подцепить её через Nuget. Там есть ещё тонкости с расположением этих GIF и настройкой проектов, чтобы их корректно находил XAML. По понятным причинам я не могу выложить свои наработки с рабочей GIF в тултипе. Поэтому, да - делайте тестовый проект, будем на его примере показывать как надо сделать.

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

  • ADN OPEN
  • ****
  • Сообщений: 379
  • Карма: 21
Re: ToolTip и GIF
« Ответ #10 : 24-05-2020, 16:19:46 »
Код - C# [Выбрать]
  1. using System;
  2. using Autodesk.Windows;
  3. using Autodesk.AutoCAD.Ribbon;
  4. using Autodesk.AutoCAD.Runtime;
  5. using System.Windows.Media.Imaging;
  6.  
  7. namespace Test_ToolTip_GIF
  8. {
  9.     public class Commands
  10.     {
  11.         [CommandMethod("TEST")]
  12.         public void CreateTab()
  13.         {
  14.             RibbonControl ribbonControl = RibbonServices.RibbonPaletteSet.RibbonControl;
  15.  
  16.             RibbonTab ribbonTab = new RibbonTab
  17.             {
  18.                 Title = "Test",
  19.                 Name = "Test_Tab",
  20.                 Id = "TEST_ID"
  21.             };
  22.             ribbonControl.Tabs.Add(ribbonTab);
  23.  
  24.             RibbonPanelSource panelSourceDocument = new RibbonPanelSource
  25.             {
  26.                 Title = "Test"
  27.             };
  28.             RibbonPanel panelDocument = new RibbonPanel
  29.             {
  30.                 Source = panelSourceDocument
  31.             };
  32.             ribbonTab.Panels.Add(panelDocument);
  33.  
  34.             RibbonToolTip toolTip_1 = new RibbonToolTip
  35.             {
  36.                 ExpandedContent = "Test",
  37.                 ExpandedImage = new BitmapImage(new Uri("X:/X.gif")),
  38.                 ExpandedVideo = new Uri("X:/X.swf")
  39.             };
  40.  
  41.             RibbonButton button = new RibbonButton
  42.             {
  43.                 Text = "Test",
  44.                 Height = 16,
  45.                 ToolTip = toolTip_1
  46.             };
  47.  
  48.             RibbonRowPanel ribbonRow = new RibbonRowPanel();
  49.             ribbonRow.Items.Add(button);
  50.             panelSourceDocument.Items.Add(ribbonRow);
  51.  
  52.             ribbonTab.IsActive = true;
  53.         }
  54.     }
  55. }

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

  • ADN OPEN
  • ****
  • Сообщений: 379
  • Карма: 21
Re: ToolTip и GIF
« Ответ #11 : 24-05-2020, 16:24:46 »
Вряд ли этим кто-то занимался. Насколько я помню ToolTip'ы используют XAML. В чистом виде XAML не поддерживает gif-анимацию.
Нашел такую библиотеку для отображения gif-анимации в XAML: https://github.com/XamlAnimatedGif
Попробуй. Может что-нибудь и получится.
Именно так и только с помощью именно этой библиотеки у меня получилось сделать анимашку в подсказке на ленте. Можно подцепить её через Nuget. Там есть ещё тонкости с расположением этих GIF и настройкой проектов, чтобы их корректно находил XAML. По понятным причинам я не могу выложить свои наработки с рабочей GIF в тултипе. Поэтому, да - делайте тестовый проект, будем на его примере показывать как надо сделать.
Это надо будет со своим плагином таскать эту библиотеку? - Я так не хочу. Из-за мелкой фичи прикручивать целую библиотеку. Я лучше сам смогу понять как написать то, что нужно, либо вообще не буду использовать. Как было в моей проблеме с xaml и сторонней библиотекой, когда AutoCAD не мог найти модуль. Я просто написал свой перетаскиватель, чтобы делать сортировку контактов в реальном времени.

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: ToolTip и GIF
« Ответ #12 : 25-05-2020, 09:24:37 »
Понимаю. Но именно эту функциональность своими силами реализовать будет довольно сложно. Библиотека открыта для просмотра - гляньте, сколько всего интересного пришлось написать, чтобы "запустить" гифки в WPF. Я посмотрел уже. Я пробовал делать свой "велосипед". И понял, что сам я лучше не сделаю. Потрачу кучу времени и, в итоге, в лучшем случае, приду к тому же самому коду, который уже есть в этой библиотеке. Она толково написана, избыточного функционала не содержит. Я для себя не нашёл никакой причины, чтобы её не использовать.
Глянул мельком код - лента, похоже, программно настраивается? Это осознанный выбор?

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

  • ADN OPEN
  • ****
  • Сообщений: 379
  • Карма: 21
Re: ToolTip и GIF
« Ответ #13 : 25-05-2020, 10:34:41 »
Глянул мельком код - лента, похоже, программно настраивается? Это осознанный выбор?
Да, всё делается программно, так как в примере простой вариант ленты, а так у меня лента со всякой автоматизацией, которая например отслеживает состояние чертежа. Такая реализация чем-то плоха?

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: ToolTip и GIF
« Ответ #14 : 25-05-2020, 14:03:21 »
К сожалению не работает.
Не работает с SWF-файлами (во всяком случае у меня), но работает с WMV-файлами (https://ru.wikipedia.org/wiki/Windows_Media_Video) :

Код - C# [Выбрать]
  1. using Autodesk.AutoCAD.Ribbon;
  2. using Autodesk.AutoCAD.Runtime;
  3. using Autodesk.Windows;
  4. using System;
  5.  
  6. // This line is not mandatory, but improves loading performances
  7. [assembly: CommandClass(typeof(TestToolTip.MyCommands))]
  8.  
  9. namespace TestToolTip
  10. {
  11.   public class MyCommands
  12.   {
  13.  
  14.     [CommandMethod("TEST")]
  15.     public void CreateTab()
  16.     {
  17.       RibbonControl ribbonControl = RibbonServices.RibbonPaletteSet.RibbonControl;
  18.  
  19.       RibbonTab ribbonTab = new RibbonTab
  20.       {
  21.         Title = "Test",
  22.         Name = "Test_Tab",
  23.         Id = "TEST_ID"
  24.       };
  25.       ribbonControl.Tabs.Add(ribbonTab);
  26.  
  27.       RibbonPanelSource panelSourceDocument = new RibbonPanelSource
  28.       {
  29.         Title = "Test",
  30.         Id = "ID_SrcPanel"
  31.       };
  32.       RibbonPanel panelDocument = new RibbonPanel
  33.       {
  34.         Source = panelSourceDocument
  35.       };
  36.       ribbonTab.Panels.Add(panelDocument);
  37.  
  38.       RibbonToolTip toolTip_1 = new RibbonToolTip
  39.       {
  40.         Title = "Этто кнопка 1",
  41.         Content = "Это моя подсказка",
  42.         ExpandedContent = "WMV-видео из внешнего файла",
  43.         ExpandedVideo = new Uri("X:/x.wmv")
  44.       };
  45.  
  46.       RibbonButton button = new RibbonButton
  47.       {
  48.         Text = "Кнопка 1",
  49.         Height = 16,
  50.         ToolTip = toolTip_1,
  51.         CommandHandler = new ButtonCmdHandler()
  52.       };
  53.  
  54.       RibbonRowPanel ribbonRow = new RibbonRowPanel();
  55.       ribbonRow.Items.Add(button);
  56.       panelSourceDocument.Items.Add(ribbonRow);
  57.  
  58.       ribbonTab.IsActive = true;
  59.       button.IsActive = true;
  60.     }
  61.   }
  62.   public class ButtonCmdHandler : System.Windows.Input.ICommand
  63.   {
  64.     public bool CanExecute(object parameter)
  65.     {
  66.       return true;
  67.     }
  68.     public event EventHandler CanExecuteChanged;
  69.     public void Execute(object parameter)
  70.     {
  71.     }
  72.   }
  73. }



Так что конвертируй своё видео в WMV.

P.S.: Кстати даже звук воспроизводится из WMV.
« Последнее редактирование: 25-05-2020, 14:52:01 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение