Матлаб. Информация о владельце фио Локтионова Оксана Геннадьевна
Скачать 1.64 Mb.
|
Лабораторная работа №4 2. Для масштабируемости окна и его элементов устанавливаем GUI-options значение свойства масштабируемости Resizable, но сверх того во всех элементах в GUIDE свойство Units как Proportional. Средствами GUIDE размечаем саму figure, оси, статический текст, текст в боксе и кнопку пуска. Средствами GUIDE размечаем само меню, затем сохраняем оба файла (lab42.fig и lab42.m). Далее редактируем последний файл самостоятельно, чтобы: во-первых, доопределить обработчики, а во-вторых, создать логотип, панель инструментов и задать их обработчики. Листинг файла lab42.m без избыточных комментариев и процедур см. ниже (рисунок 31): function varargout = lab42(varargin) % Begin initialization code - DO NOT EDIT 115 gui_Singleton = 1; gui_State = struct( 'gui_Name' , mfilename, 'gui_Singleton' , gui_Singleton, 'gui_OpeningFcn' , @lab42_OpeningFcn, 'gui_OutputFcn' , @lab42_OutputFcn, 'gui_LayoutFcn' , [], 'gui_Callback' , []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT Рисунок 31 - Листинг файла lab42.m без избыточных комментариев и процедур 116 % --- Executes just before lab42 is made visible. function lab42_OpeningFcn(hObject, eventdata, handles, varargin) % Choose default command line output for lab42 handles.output = hObject; %Добавление элементов handles.toolbar1=uitoolbar( 'Tag' , 'toolbar1' ); handles.tbr_button1=uipushtool(handles.toolbar1, 'T ag' , 'tbr_button1' ); handles.tbr_button2=uipushtool(handles.toolbar1, 'T ag' , 'tbr_button2' ); handles.tbr_button3=uipushtool(handles.toolbar1, 'T ag' , 'tbr_button3' ); %1-й способ - создание картинки на лету x=ones(20);CData=cat(3,x,x/2,x/3);set(handles.tbr_ button1, 'CData' ,CData); %2-й способ - чтение из bmp-файла. Функция imresize не из ядра МАТЛАБ x=imread( 'photo.bmp' , 'bmp' );CData=imresize(x,[20 20], 'bilinear' ); set(handles.tbr_button2, 'CData' ,CData, 'TooltipStri ng' , '2-я кнопка' ); %3-й способ - чтение из ico-файла с помощью утилиты iconRead % работа утилиты зависит от формата файла и не всегда корректна icopath=fullfile(matlabroot, 'help' , 'techdoc' , 'crea ting_guis' , 'examples' ); path(icopath,path);CData=iconRead( 'my.ico' );rmpath (icopath); set(handles.tbr_button3, 'CData' ,CData, 'TooltipStri ng' , '3-я кнопка' ); %Поместим логотип в верхнем правом углу mn=[50 50];x=imread( 'photo.bmp' , 'bmp' );CData=imresize(x,m n, 'bilinear' ); h=handles.output;set(h, 'Units' , 'pixels' );pos=get(h , 'Position' ); pos=[pos(3)-mn(1) pos(4)-mn(2) mn]; 117 haxes_im=axes( 'Tag' , 'axes_im' , 'Units' , 'pixels' , 'Po sition' ,pos, 'Parent' ,h); set(h, 'Units' , 'normalized' );set(haxes_im, 'Units' , ' normalized' ); handles.haxes_im=haxes_im;handles.im=image(CData, ' Parent' ,haxes_im, 'Tag' , 'im' ); set(haxes_im, 'Visible' , 'off' ); %Установка вызова обработчика для первой кнопки панели инструментов set(handles.tbr_button1, 'ClickedCallback' ,{@tbr1_C allback, handles, 'Апельсины' }); % Update handles structure guidata(hObject, handles); % --- Outputs from this function are returned to the command line. function varargout = lab42_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; % --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles.axes1);cla reset ;set(gca, 'Color' , 'Yellow' ); text(0.1,0.1, 'Да здравствует Лимон!' ); % ------------------------------------------------ function Kapusta_Callback(hObject, eventdata, handles) % hObject handle to Kapusta (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) 118 beep; function tbr1_Callback(hObject, eventdata, handles, label) axes(handles.axes1);cla reset ;set(gca, 'Color' ,[1 1/2 1/3]); text(0.1,0.1,label);title(label);set(hObject, 'Tool TipString' , 'Apelsin' ); |