Matlab学习笔记 (一)GUI用户图形界面编程

1. 查找同一类型的所有控件:

findobj(gcf, 'type','axes') %查找所有坐标轴,gcf表示当前图形界面


2. 不显示坐标轴:

set(handles.axes1,'xTick',[]);
set(handles.axes1,'ytick',[]);
set(handles.axes1,'box','on');

以上是设置单个坐标轴,如果设置所有坐标轴,handles.axes1替换为findobj(gcf, 'type','axes')


3. 完全隐藏坐标轴(包括背景色):不影响图片的显示和更新

set(findobj(gcf, 'type','axes'),'visible','off');


4. 显示、隐藏图片:

cla(findobj(gcf, 'type','axes'));   %清空所有坐标轴中的图片,可修改为清空指定坐标轴中的图片 

str='F:\software\pic';

im=imread(str);
axes(handles.(sprintf('axes%d', j))); %通过变量控制显示图片的坐标轴
imshow(im);  %%%读取彩色图像,自动按比例缩放适应坐标轴大小

axis image;  %保持坐标轴不变


5. 坐标轴显示图片后,坐标轴的标签tag被清空的问题:

使用代码创建axes,axes('Tag', tag, 'Position', position);

此时可以正常获取标签值,ax = findobj(gcf, 'type', 'axes'); tags = get(ax,'Tag'); fprintf('Tag:%s. ', tags{i});

但如果在坐标轴内显示图片,imshow(im);

此时获取的标签tag值将变成空。

解决方法:创建是指定NextPlot属性为Add,axes('Tag', tag, 'Position', position, 'NextPlot', 'Add');

参考页面:http://www.mathworks.com/matlabcentral/answers/64097-the-axes-tag-keeps-on-deleting

                    http://www.ilovematlab.cn/thread-69688-1-1.html

(axes的 'NextPlot' 属性为 replacechildren 时,则下一次在指定axes对象内使用 plot 或者用 imshow函数时,是重新绘制。 axes的 'NextPlot' 属性为 add 时,上一次绘制的内容仍然存在,当前的绘制用不同的颜色来绘制(对于plot是这样,imshow没试),括号内为个人添加,如有错误,请指出。)


6. 程序修改列表框内容:

str = get(handles.listbox1,'string');
str{end+1} = ‘new list’;
set(handles.listbox1,'string',str);


7. 获取列表框当前选中的序号和文字内容:

id = get(handles.listbox1,'value')
str = get(handles.listbox1,'string');
content = str{id};


8. 从文件读取数据成为全局变量:

OpeningFcn函数中用globle声明全局变量,并用load('youfile.mat')从文件中读取变量;

在所有需要使用该变量的函数中,用globle声明全局变量,然后使用该变量;


9. 保存变量到文件中:

增加CloseRequestFcn(在GUIDE空白处右键,View Callbacks);

函数最末尾内容:global identify;
save('filename.mat','identify','-append');
delete(hObject);

不需要uiwait和uiresume,除非需要用户确认或输入信息。


10. 静态字符text换行:

str = '度:';
str = [str, num2str(num), 10]; %10表示换行
str = [str, '性别:'];
set(handles.text1,'string',str); 


11. 多坐标轴显示图片,通过鼠标点击获得当前坐标轴,并在所点击图片周围画方框表示选中:

ax = axes('Tag', tag, 'Position', position, 'NextPlot', 'Add');

fprintf('%s ', get(ax, 'Tag')); %获得当前坐标轴的标签,也可以获得其它信息
hImage = imshow(im);  
axis image;
set(hImage,'ButtonDownFcn',{@selectaxes, handles});

。。。。

回调函数如下:

function selectaxes(hobj, enent, handles) %自定义回调函数(鼠标点击图片)
ax = get(gcf, 'CurrentAxes'); %获得当前坐标轴
xlim = get(ax, 'xlim'); ylim = get(ax, 'ylim');  %获得坐标轴范围
position = [1 1 xlim(2)-1 ylim(2)-1];
delete(findobj(gcf, 'type','rectangle'));  %先清除所有已绘制的矩形
rectangle('Position', position, 'edgecolor', 'r', 'LineWidth', 2);

原博客链接:
https://blog.csdn.net/hangzhouhao/article/details/43834585

猜你喜欢

转载自blog.csdn.net/zhu_wendao/article/details/88911826