Используйте Internet Explorer в фигуре MATLAB

Этот пример использует управление ActiveX® Shell.Explorer, который представлен приложением Microsoft® Internet Explorer®, чтобы включать средство просмотра HTML в фигуру MATLAB®. Кнопка окна фигуры вниз функционирует, затем используется, чтобы выбрать графический объект, когда пользователь кликает по графику, и загрузите документацию свойства объекта в средство просмотра HTML.

Методы, продемонстрированные

  • Используя Internet Explorer из клиентской программы ActiveX.

  • Определение кнопки окна вниз функционирует, который отображает документацию свойства HTML для любого объекта пользовательские нажатия кнопки.

  • Определение resize функционирует для фигуры, которая также изменяет размер контейнера объекта ActiveX.

Используя фигуру к Access Properties

Этот пример создает большее, чем нормальное окно фигуры, которое содержит объект осей и средство просмотра HTML на более низкой части окна фигуры. По умолчанию средство просмотра отображает https://www.mathworks.com URL cOM. Когда вы даете команду графического изображения, такую как:

surfc(peaks(20))

график отображается в осях.

Щелкните где угодно в графике, чтобы видеть документацию свойства для выбранного объекта.

Полный листинг кода

Можно открыть файл, который реализует этот пример в редакторе MATLAB, или можно запустить этот пример со следующими ссылками:

Создание фигуры

Этот пример задает размер фигуры на основе размера фигуры по умолчанию и добавляет пробел для элемента управления ActiveX. Вот код, чтобы задать фигуру:

dfpos = get(0,'DefaultFigurePosition');
hfig = figure('Position',dfpos([1 2 3 4]).*[.8 .2 1 1.65],...
   'Menu','none','Name','Create a plot and click on an object',...
   'ResizeFcn',@reSize,...
   'WindowButtonDownFcn',@wbdf,...
   'Renderer','Opengl');

Обратите внимание на то, что фигура также задает изменить размер функцию, и кнопка окна вниз функционируют путем присвоения указателей на функцию свойствам ResizeFcn и WindowButtonDownFcn. Функции обратного вызова reSize и wbdf заданы как вложенные функции в том же файле.

Вычисление размера контейнера объекта ActiveX

Функция actxcontrol создает элемент управления ActiveX в заданной фигуре и возвращает указатель управления. Необходимо предоставить следующую информацию:

  • Программируемый идентификатор управления (используют actxcontrollist, чтобы найти его),

  • Местоположение и размер контейнера управления в фигуре (пиксели) [высота ширины левой нижней части]

  • Указатель фигуры, которая содержит управление:

% Calculate the container size
conSize = calcSize;
% Create the control
hExp = actxcontrol('Shell.Explorer.2',conSize,hfig);
% Specify content of html viewer
Navigate(hExp,'https://www.mathworks.com/');

Вложенная функция, calcSize вычисляет размер контейнера объекта на основе текущего размера фигуры. calcSize также используется фигурой функция resize, которая описана в следующем разделе.

function conSize = calcSize
fp = get(hfig,'Position');              % Get current figure size
conSize = [0 0 1 .45].*fp([3 4 3 4]);   % Calculate container size
end % calcSize

Автоматический изменяют размер

В MATLAB можно изменить размер фигуры, и оси автоматически изменяют размер, чтобы соответствовать новому размеру. Этот пример реализует подобное поведение изменения размеров для контейнера объекта ActiveX в фигуре, использующей метод move объекта. Этот метод позволяет вам изменить и размер и местоположение контейнера объекта ActiveX (i. e., это эквивалентно установке фигуры свойство Position).

Когда вы изменяете размер окна фигуры, программное обеспечение MATLAB автоматически вызывает функцию, присвоенную свойству ResizeFcn фигуры. Этот пример реализует вложенную функцию reSize для фигуры функция reSize.

ResizeFcn в фигуре создание

Функция resize сначала определяет, существует ли объект ActiveX, потому что программное обеспечение MATLAB вызывает фигуру функция resize, когда фигура сначала создается. Поскольку объект ActiveX не был создан в этой точке, функция resize просто возвращается.

Когда фигура изменена

Когда вы изменяете размер фигуры, функция resize выполняет и делает следующее:

  • Вызывает функцию calcSize, чтобы вычислить новый размер для контейнера управления на основе нового размера фигуры.

  • Вызывает метод move управления, чтобы применить новый размер к управлению.

function reSize(~,~)
if ~exist('hExp','var')
   return
end
conSize = calcSize;
move(hExp,conSize);
end % reSize

Выбор графических объектов

Этот пример использует фигуру свойство WindowButtonDownFcn задать функцию обратного вызова, которая обрабатывает события нажатия мыши в фигуре. Когда вы щелкаете левой кнопкой мыши, в то время как курсор по фигуре, программное обеспечение MATLAB выполняет обратный вызов WindowButtonDownFcn на мыши вниз событие.

Обратный вызов определяет, по какому объекту кликнули путем запроса фигуры свойство CurrentObject, которое содержит указатель графического объекта, по которому последний раз кликают. Если у вас есть указатель объекта, можно определить его тип и затем загрузить соответствующую страницу HTML в управление Shell.Explorer.

Вложенная функция wbdf реализует обратный вызов. Если это определяет тип выбранного объекта, это использует управление метод Navigate, чтобы отобразить документацию для типа объекта.

function wbdf(~,~)
   cobj = get(hfig,'CurrentObject');
   if isempty(cobj)
   disp('Click somewhere else')
   return
   end
   pth = 'https://www.mathworks.com/help/techdoc/ref/';
   typ = get(cobj,'Type');
   switch typ
      case ('figure')
         Navigate(hExp,[pth,'figure_properties.html']);
      case ('axes')
         Navigate(hExp,[pth,'axes_properties.html']);
      case ('line')
         Navigate(hExp,[pth,'chartline_properties.html']);
      case ('image')
         Navigate(hExp,[pth,'image_properties.html']);
      case ('patch')
         Navigate(hExp,[pth,'patch_properties.html']);
      case ('surface')
         Navigate(hExp,[pth,'chartsurface_properties.html']);
      case ('text')
         Navigate(hExp,[pth,'text_properties.html']);
      case ('hggroup')
         Navigate(hExp,[pth,'group_properties.html']); 
      otherwise
         Navigate(hExp,[pth(1:end-4),'graphics-object-properties.html']);
   end
end % wbdf
Была ли эта тема полезной?