在没有图像的轴上显示徽标 - Matlab

时间:2017-01-05 08:13:10

标签: matlab user-interface

如何在不使用显示图像和没有jpg文件的功能的情况下在此图形用户界面上显示此徽标,... !!!

下载此GUI here

谢谢

2 个答案:

答案 0 :(得分:1)

简而言之:

可能是在创建GUI之后手动添加了徽标,而没有使用guide,相反,似乎是工具,用于创建 整个GUI。

详细信息:

要在GUI中显示图像,首先需要在GUI中添加axes 然后,使用imshow函数附加图像。

对于"徽标",应该在GUI打开时显示 并且在执行GUI期间不进行修改,可能是插入 以下代码:

imshow('my_logo_image.jpg')

在GUI OpeningFcn中,它在hweufhef可见之前执行。

不幸的是,查看GUI的.m文件并非如此。

很难理解整个GUI,特别是徽标 尽管如此,可以对GUI进行一些考虑。

使用guide工具打开GUI,这就是它的显示方式:

enter image description here

您可以注意到左下角的轴,这是其中的位置 徽标出现。

到目前为止一切顺利。

现在,双击axes打开Property Inspector:您将 注意到一些奇怪的事情:tag的{​​{1}}属性为空。

这很奇怪,因为axes会自动定义默认的guide属性 为每个项目添加。

现在,使用了GUI的备份副本

  • 双击不包含任何Tag的GUI的任何一点, 这将打开uicontrol
  • Property Inspector
  • 转到Figure媒体资源并将其设为HandleVisibility
  • 保存GUI
  • 关闭on工具

现在从CommandWindow(fsolveGUI)运行GUI,然后再次在 CommandWindow运行以下命令:

GUIDE

函数gui_handels=guidata(gcf) 将返回GUI中对象的guidata

这是输出:

handels

你会注意到奇怪的东西

  • GUI包含轴
  • 其属性gui_handels = figure1: [1x1 Figure] edit1: [1x1 UIControl] Untitled_1: [1x1 Menu] text11: [1x1 UIControl] Untitled_2: [1x1 Menu] File: [1x1 Menu] pushbutton1: [1x1 UIControl] edit3: [1x1 UIControl] text8: [1x1 UIControl] text7: [1x1 UIControl] text3: [1x1 UIControl] edit2: [1x1 UIControl] text1: [1x1 UIControl] copyto: [1x1 Menu] pastefrom: [1x1 Menu] mfile: [1x1 Menu] openResults: [1x1 Menu] SaveResults: [1x1 Menu] loadeqfile: [1x1 Menu] output: [1x1 Figure] HandleVisibility(您可以使用on进行检查)
  • 尽管如此,guide
  • 返回的handles列表中没有它

您可以使用此命令获取此guidata这个神奇的handle

axes

现在可以使用此命令访问轴中绘制的数据

logo_ax_handle=findobj(gcf,'type','axes')

你会得到一个axes_data=logo_ax_handle.Children.CData; 矩阵,实际上就是Logo。

您可以按如下方式验证:

54x192x3 unit8

考虑到所有这一切,可以回答你的问题 可以是:

  • 创建的GUI没有轴和图figure axes imshow(axes_data) HandleVisibilit
  • 使用on工具
  • 手动将轴添加到GUI
  • 图片,徽标,已添加到轴
  • GUI已使用guide功能
  • 保存
  • 已使用savefig
  • 打开GUI
  • 该数字的guide预算已设为HandleVisibility

您可以按如下方式测试这种可能性:

  • 使用callback m,创建一个GUI,例如,只有guidepushbutton, 只是为了拥有"的东西"内部
  • editbox的{​​{1}}广告设为HandleVisibility
  • 保存GUI(在下面的示例中,我称之为figure 并关闭on

然后运行以下代码,e。 G。从脚本(更改图像的名称)

add_axes_manually

从两次调用guide的输出中,您会注意到:

  • 轴的手柄不是diplayd
  • GUI现在包含徽标(图片)
  • 徽标嵌入在GUI中,显然,既没有 add_axes_manually guidata(gcf) axes('unit','normalized','position',[0.08 0.4 0.3 0.3]) imshow('Jupiter_New_Horizons.jpg') savefig('add_axes_manually.fig') add_axes_manually guidata(gcf) 文件或代码,用于在guidata文件
  • 中插入徽标

GUI已被保存"外部"似乎支持.jpeg工具 事实上,当你打开它时,会显示一些等式,而它们是 不存在于GUI的.m文件中。

希望这有帮助,

Qapla'

答案 1 :(得分:0)

基本上有two ways to construct GUIs in MATLAB

  1. 使用GUIDE
  2. 编程
  3. GUIDE允许您以图形方式创建和定位uicontrol和其他对象。当部署GUI时,GUIDE会为M文件中的uicontrol回调生成函数,而FIG文件则包含您可能包含的所有uicontrol和其他图形对象的所有数据在GUI中。将此用于具有简单布局和简单uicontol行为的GUI(读取:您将创建的大多数 GUI)

    以编程方式执行操作时,您必须自己完成所有操作 - uicontrol定位,回调,徽标定位和显示,一切。没有FIG文件可以帮助您(通常),只有您编写的M文件。如果您希望/需要绝对控制uicontrol行为,多个子GUI,选项卡,MATLAB和uicontrol之间的复杂交互以及诸如此类的东西,请使用此选项。更难做,但它给你绝对的控制。

    您链接到的GUI显然是使用GUIDE创建的。 PNG / JPG / FIG文件中嵌入的任何内容。