在matlab的GUI编程中,把figure的图像显示到GUI的axe上是非常重要的的,GUI编程下的图像显示非常常见。matlab GUI默认菜单的保存图像默认为保存全部GUI,其中包括使用" 菜单->编辑->复制图形"。

那如何把matlab的fig文件显示到GUI 的axe上?下面进行一一分析,首先介绍图像的句柄,如下:

图像(figure)的句柄

设置图像句柄如下:

figure_handler = figure;     % 建立一个默认图像,并将图像的句柄返回至handler中

如果想对建立figure进行操作,只需要改变handler的属性值即可,如下设置:

figure_handler = figure('name', 'example', 'numbertitle', 'off');

通过上面语句建立的图像,关闭了数字标题,并把图像名设置为example,那么新建的图像在标题栏就只会显示example了。

figure属性包含如下:

  • WindowKeyPressFcn :图像窗口键盘按下回调函数,当图像窗口被设置为当前窗口时,按下键盘上的键时调用该函数
  • name :图像名,也是窗口名,值为字符串
  • units :图像中位置等信息的衡量单位,常用值为’normalized’(归一化值)以及’pixel’(像素)
  • position :按钮在图像中的位置,4维向量,[左起始点,下起始点,宽度,高度]
  • numbertitle :显示在窗口栏的数字标题,这里没用,设置为’off’或’on’
  • resize :标识窗口是否能被用户重新定义大小,设置为’off’或’on’
  • menubar :图像的菜单栏,可以是菜单栏句柄,也可以为’none’或’fiure’,'none’表示无菜单栏,'figure’为默认绘图窗口的菜单栏
  • toolbar :图像的工具栏,可以是工具栏句柄,也可以为’none’或’fiure’,'none’表示无工具栏,'figure’为默认绘图窗口的工具栏

set和get函数

set函数的作用是设置句柄的属性值,set函数的调用格式为:

set(句柄,属性名1,属性值1,属性名2,属性值2,…)

原型如下

set(figure_handler, 'property1', value1, 'property2', value2)

如果想要改变建立的图像的鼠标,那么只需要执行如下语句即可

set(figure_handler, 'pointer', 'cross');

把鼠标移动到建立的图像上,观察下鼠标,会发现不同。如果想知道更多种类,在帮助文档中查找 figure properties。

例如:

set(gca,'xtick',X,'ytick',Y) %设置网格的显示格式,gca获取当前figure的句柄

get函数的作用是获取句柄的属性值,原型如下

value = ge(figure_handler, 'property');

a=get(0,'FactoryObjectTypePropertyName1','FactoryObjectTypePropertyName2',...)
返回指定对象类型指定的属性值,输入参数FactoryObjectTypePropertyName为一个关键词,由字符Factory与图形对象类型(如Figure)还有属性名称(如Color)组成。

按钮建立:uicontrol函数

按钮通过函数uicontrol来建立,调用方式如下:

button_handler = uicontrol(figure_handler, 'style', 'pushbutton');
  • fiugre_handler作为按钮的父句柄,那么这个按钮的句柄是图像的子柄。
  • style定义风格,这里是’pushbutton’。

建立时可以同时定义其他属性,按钮的属性值如下,

  • units :图像中位置等信息的衡量单位,常用值为’normalized’(归一化值)以及’pixel’(像素)
  • position :按钮在图像中的位置,4维向量,[左起始点,下起始点,宽度,高度]
  • string :显示在按钮上的字符串
  • fontsize :有字符当然有字体大小了
  • callback :回调函数,当按钮被按下时执行的函数

对应方法

  • 如果那个Figure的图形也是这个GUI产生的,那么可以尝试直接在那个AXES上画,也就是在画图之前,用axes命令把目标AXES设成当前axes。然后再画图。
  • 如果无法控制那个Figure,那么可以使用copyobj命令把该Figure上的内容全部拷贝到目标AXES上。

函数getframe()是为了获取坐标轴中的一帧图像,其返回的对象中有cdata和colormap两个成员。

[FileName,PathName] = uiputfile({'*.jpg','JPEG(*.jpg)';...'*.bmp','Bitmap(*.bmp)';...'*.gif','GIF(*.gif)';...'*.*',  'All Files (*.*)'},...'Save Picture','Untitled');
if FileName==0disp('保存失败');return;
elseh=getframe(picture);%picture是GUI界面绘图的坐标系句柄imwrite(h.cdata,[PathName,FileName]);
end
new_f_handle=figure('visible','off');
new_axes=copyobj(handles.axes,new_f_handle); %axes1是GUI界面绘图的坐标系
set(new_axes,'units','default','position','default');
[filename,pathname fileindex]=uiputfile({'*.jpg';'*.bmp'},'save picture as');
if ~filenamereturn
elsefile=strcat(pathname,filename);switch fileindex %根据不同的选择保存为不同的类型case 1print(new_f_handle,'-djpeg',file);case 2print(new_f_handle,'-dbmp',file);end
end
delete(new_f_handle);

Matlab GUI编程技巧(三):把figure文件显示到GUI的axe上相关推荐

  1. Matlab GUI编程技巧(一):如何使gui编的界面一运行就居中

    有些时候在进行MATLAB GUI可视化界面编写时,需要将界面在运行时就处于居中状态.以下总结了两种方法: 方法一 假如当前的figure的句柄是h,则在程序运行的刚开始,用以下命令: set(h,' ...

  2. Matlab GUI编程技巧(六):从一个GUI界面跳转到另一个GUI界面以及GUI窗口间数据传递

  3. MATLAB高效编程技巧与应用:25个案例分析

    MATLAB高效编程技巧与应用:25个案例分析 第1章 MATLAB快速入门 MATLAB给qq邮箱发邮件 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一个 ...

  4. LabVIEW与MATLAB联合编程之使用dll库文件连接

    LabVIEW与MATLAB联合编程之使用dll库文件连接 最近做东西的时候用到了在LabVIEW里面调用MATLAB的分类模型,辗转多篇文章终于搞定,特此记录,以供参考. 编程环境:Windows1 ...

  5. MATLAB使用教程(三)——在文件中编程

    1.把matlab编码调整为utf-8编码 首先,删除这个部分(一定先备份这个lcdata.xml文件,备份就是拷贝一个副本),我的是2016版,大概在这里,你们可以搜索以下: 然后,找到这个部分,增 ...

  6. matlab编程实际应用,MATLAB高效编程技巧与应用:25个案例分析

    第一部分 高效编程技巧 第1章 MATLAB快速入门 1.1 熟悉MATLAB环境 1.1.1 MATLAB的启动 1.1.2 MATLAB desktop 1.1.3 MATLAB 程序编辑器(Ed ...

  7. ftp服务器上图片文件显示不出来,ftp服务器上图片文件显示

    ftp服务器上图片文件显示 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器上分别安装 ...

  8. Matlab GUI编程技巧(十):ui figure函数创建可视化图窗

  9. Matlab编程技巧:导入A2L文件

    本文研究如何通过Matlab脚本导入A2L文件,并将A2L文件的一些信息写入表格中. 文章目录 1 A2L文件 2 A2L文件的解析 3 将A2L信息导入表格 3.1 A2L中的变量信息 3.2 Ma ...

最新文章

  1. python可视化文本分析(2)—snownlp jieba分析QQ群成员发言情况
  2. SHELL相关的特殊字符总结
  3. .NET Core:新的快速开发平台
  4. POJ3585-Accumulation Degree【树形dp,二次扫描与换根法】
  5. [你必须知道的.NET]第十六回:深入浅出关键字---using全接触
  6. 动态调用动态库方法 .so
  7. Apache Benchmark(简称ab)压力测试安装与解释
  8. Hibernate 主清单文件配制说明
  9. 解决ray报错AttributeError: module ‘aioredis‘ has no attribute ‘create_redis_pool‘
  10. c语言中open函数r,C语言中open函数
  11. paip.lucene 4.3 中文语义搜索最佳实践
  12. Python之旅Day14 JQuery部分
  13. B站(云e办)SpringBoot实战练习的Sql文件、前端Vue源码、后端springboot源码
  14. Keil 5下载安装教程以及使用教程
  15. xbox 手柄按键测试软件,unity中链接Xbox手柄设置及按键检测
  16. 网络处理中TLV形式的不固定格式匹配
  17. EasyWechat微信支付jsapi缺少参数 total_fee
  18. ES5和ES6的类,静态方法,继承实现代码
  19. 2021年中国海上风电行业发展现状分析,双碳循环下行业飞速发展「图」
  20. Scala List操作笔记 --备忘(9.9总结)

热门文章

  1. 3D MAX 人物骨骼建设
  2. Python中列表的一些常见操作
  3. 2021云栖大会:阿里云自研技术大爆发,连发多款重磅产品
  4. python英雄联盟登录程序,注册用户程序
  5. Flowable入门系列文章41 - 网关 03
  6. standard_init_linux.go:211: exec user process caused “exec format error“
  7. 2019年9月3日安卓凯立德全分辨率(路况)夏季版C3551-C7M24-3K21J25懒人包
  8. 键盘上的双引号变成@了
  9. Sage X3 ERP-PJM结构分解
  10. 8.旭日图+热力地图