Matlab GUI 缩放-部分控件缩放、部分控件不缩放-设计教程

这里介绍matlab gui设计之缩放,实现任意控件的缩放和不缩放设计

这里考虑实际需要,缩放GUI时并不想缩放全部控件,比如只想缩放坐标轴显示的波形,而设定按钮和串口配置等保持位置和大小不变

如果仅仅按照matlab上的示例和网上大部份资料,缩放配置时达不到这样的要求,这就要考虑如何实现这样的设计过程

Matlab GUI 缩放-部分控件缩放、部分控件不缩放-设计教程

 

如图上示意图,波形尺寸变化,但是要按钮控件保持不变

这就要有一个机制来实现,图形坐标及大小随着figure大小在变动;

根据matlab特性,设计步骤如下:

1.先设置总体可以缩放,在GUI选项中设置,如图1

Matlab GUI 缩放-部分控件缩放、部分控件不缩放-设计教程

 Matlab GUI 缩放-部分控件缩放、部分控件不缩放-设计教程

 图1:gui选项设定

 这时整个窗体和所有控件都可缩放,所有控件没有区别

2.单独设置控件不可缩放,在属性中修改Units单位为像素pixels,如图2,这时按钮控件就不能缩放了

 Matlab GUI 缩放-部分控件缩放、部分控件不缩放-设计教程

 图2:按键设定为不能缩放

那可能要问了,这是不是就达到效果了,肯定没有,可以自己试一下;这时会导致控件处在一个固定的位置了,虽然大小不变了,但达不到随着界面大小变化而位置也在随动,如图3;

Matlab GUI 缩放-部分控件缩放、部分控件不缩放-设计教程

 图3:错误的效果

3.我们就要解决2中存在的问题

我们观察控件的位置特点,它的位置与fig的右上角的位置差是固定的,所有我们只要读取fig的右上角的坐标后,然后根据xy差值,更新控件的位置信息即可

 Matlab GUI 缩放-部分控件缩放、部分控件不缩放-设计教程

 有这个图我们知道只要保证Δx,Δy保持不变就可以使得按钮控件的位置随着fig缩放变化保持一致

另外介绍几点关于坐标的信息:

Matlab GUI 缩放-部分控件缩放、部分控件不缩放-设计教程

 在gui设计最低下有坐标显示:当前点:坐标是鼠标所在的位置,位置:是我们选择的控件或fig的位置信息,这里我们选择的是fig,所以就显示的是fig的位置,双击fig弹出属性,看到position是和这个信息一致的;修改position的值就可以改变fig的大小,xy是默认打开fig所在的位置(左下角起点);当然你选中其他组件,他们也是一致的信息;

在实际缩放中就是自动改变fig的大小即width、height两个值达到改变fig大小;

现在我们要做的:

第一步:就是读取fig的width、height

首先获取fig的pisition信息

figposition=get(gcf,'position');%这里得到了fig的位置值figposition=[x y  width height ]

figwidth=figposition(3);%宽度,figposition是向量,直接下表引用即可

figheight=figposition(4);%高度

第二步:设定按钮的位置x,y

set(handles.button,'position',[figwidth-Δx  figheight-Δx  width  height ]);

Δx Δy是我们开始设计gui时确定的差值,这个是确定的

4.整体代码

Matlab GUI 缩放-部分控件缩放、部分控件不缩放-设计教程

这里我们选择在fig的回调函数SizeChangedFcn中来更新按钮的坐标位置

function figure1_SizeChangedFcn(hObject, eventdata, handles)
% hObject    handle to figure1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
size=get(gcf,'Position');
SizePosition=[(size(3)-50) (size(4)-40) 41 24];
set(handles.open,'Position',SizePosition);

5.演示效果:缩放后,按钮保持fig内的位置不变,而坐标轴缩放正常

Matlab GUI 缩放-部分控件缩放、部分控件不缩放-设计教程

 

这里只以按钮和坐标轴来示例,具体实际那些控件缩放不缩放,由实际需要而定 

 

 

上一篇:java中scanner的正确用法


下一篇:TCP/IP 要点备忘