这期文章中的问题虽然比较少,但是综合性较强。
系列文章目录:

  • MATLAB 手把手带你制作第一个APP designer程序(电子词典)
  • MATLAB App Designer入门实战(一)
  • MATLAB App Designer入门实战(二)
  • MATLAB App Designer入门实战(三)
  • MATLAB App Designer 特别篇:RGB颜色提取器

入门实战第三弹——连连看小游戏App

目录

  • 13.在APP Designer获取文件夹内所有图片链接
  • 14.如何确定鼠标点击图片的序号
  • 15.如何在图片上方绘制线条

13.在APP Designer获取文件夹内所有图片链接

dir函数在APP Designer中依旧可以用,例如我们想要获得名为’图片‘文件夹中的所有jpg图片的链接,则可以通过以下步骤:

path=‘图片文件夹的链接地址’;
例如:
path=‘E:\MATLAB\R 2019b\bin\连连看\图片’;

通过dir函数获取jpg图像的所有信息
picInformation=dir(fullfile(path,’*.jpg’));

提取其中第i张图的名称并合成完整路径:
picPath=[path,’’,picInformation(i).name];

14.如何确定鼠标点击图片的序号

这个问题的提出是因为连连看足足有6x8=48张图片
↓↓↓↓↓↓ ↓↓↓↓↓↓ ↓↓↓↓↓↓ ↓↓↓↓↓↓ ↓↓↓↓↓↓

满足以下两个条件的图片组在被点击时很难确定其序号

  • 图片量很大
  • 图片的位置并不整齐

这时候我们很轻易地就有一个想法,我们为什么不把图片做成按钮?要实现这个功能我们便考虑使用UIimage的ImageClicked回调,但是有一个问题,就是图片量很大,我们就需要批量创建图片,但是批量创建的图片需要写在startupFcn中,startupFcn中创建的控件无法直接为其创立回调,这时候又要用到问题10中的虚控件,创造一个不可视的UIimage控件增添回调,并让批量创建的控件与其共享一个回调,步骤如下:
一 在startupFcn中批量创建控件并赋予属性

二 拖拽创造UIimage对象并隐藏

.

.

三 为虚控件增添回调并让批量创建控件与其共享回调
.

像上期说的一样自主创建的控件要增添回调需要借用
createCallbackFcn,因此我们可以在循环中加一行

set(app.drawPicHdl(i,j),'ImageClickedFcn',createCallbackFcn(app, @VirtualImageClicked, true))


这时候我们观察一下创建的回调的结构:

发现通过UIimage对象创建的回调不像通过image对象创建的回调一样具有object输入变量,但是所幸还有一个event可以做一下文章,我们查看一下event的属性发现:

发现它具有一个Source属性,指向的正是原图形对象,而原图形对象能够作为有效地辨别序号的信息有:

  • Tag : 标签
  • UserData : 用户数据
  • Position : 图形位置

这仨属性能够用来分开哪个图是哪个图,我Tag其实用的比较多,但是如果你的序号形式为数对的话,会发现,UserData真香。

四 为控件增添UserData属性
就多写一行呗,美滋滋

这样我们就可以在ImageClicked回调,通过:

event.Source.UserData

了解到到底点击了哪个图片了:

15.如何在图片上方绘制线条

当UIAxes在UIimage或其他控件下面时,画出的图像也是在UIimage或其他控件下面,当UIAxes在他们上面时 ,便会出现以下状况:

我们很自然的想到如果把它调成透明的不就好了,但是很遗憾我们发现,中间白色区域可以调成无色的:

但是背景色除了无色啥颜色都能调。。。。。。。。。。。。。‘。。。。。。。。。。。。。

直接画曲线的想法算是破灭了,但我们。。。。。。还有另一个想法那就是。。。。。uilabel,没错就是能写字能变色的小标签,直线可不就是一个窄窄的长方形嘛(捂脸),不过需要注意的是uilabel也是有边框的,而且左右和上下边框宽度还不一样,这就需要在作图时适当调整数据,通过uilabel我们就能实现连连看的连线功能啦:


相信认真看完这篇文章的你已经有了还原该mlapp文件的能力,在这里提供m版和mlapp版的连接:
MATLAB 连连看小游戏m文件链接:MATLAB连连看小游戏
MATLAB 连连看小游戏mlapp文件链接:MATLAB连连看小游戏APP(mlapp)

MATLAB App Designer入门实战(三)相关推荐

  1. MATLAB App Designer入门实战(一)

    最近也是在研究MATLAB App Designer,开这样的一个系列主要是为了记录我在研究App Designer时遇到的一部分问题的解决,和一部分有趣的想法,每一篇文章会展示如何将一个项目mlap ...

  2. MATLAB App Designer入门实战(二)

    为了方便汇总,这里的目录是接着第一篇来的. 系列文章目录: MATLAB 手把手带你制作第一个APP designer程序(电子词典) MATLAB App Designer入门实战(一) MATLA ...

  3. MATLAB App Designer 特别篇:RGB颜色提取器

    在大家的要求下,我将RGB颜色提取器App化了,并做出了以下几个改进: 保留小数位数标准化 颜色格式多样化: 支持16进制码及HSV格式 数据输出标准化: 其他的用法可以看之前GUI版本的相关文章: ...

  4. Matlab App Designer 【03】绘制基本测试函数图像以及摸鱼听歌

    绘制基本测试函数图像以及摸鱼听歌 一.绘制基本测试函数图像 1.函数的定义与调用 2.保存图片到指定路径 3.图像回调 二.复现网易云音乐播放器 1.web网络请求API 2.try catch en ...

  5. 《MATLAB App Designer从入门到实践》随书源代码

    GUIDE已经被MATLAB抛弃了,你还不知道吗?App Designer才是发展的方向 目前市面上MATLAB GUI编程的书籍琳琅满目,但大多数是基于GUIDE开发的,MATLAB从2016年开始 ...

  6. MATLAB App Designer —— 手撕代码学习总结

    文章目录 MATLAB App Designer 官方文档 MATLAB App Designer 官方示例 (一) (1.1)csvread() 函数 (1.2)xlsread() 函数 (1.3) ...

  7. MATLAB App Designer GUI开发从0到1(二)

    文章目录 前言 一.开关以及旋钮 1. 左上角:旋钮 2.右上角:90度仪表 3.左下角:分档开关 4.右下角:开关 5.对旋钮微调 二.画图 1. 普通画图 2.添加小组件 三.回调函数 简单的回调 ...

  8. 汽车各档爬坡度曲线matlab,基于MATLAB App Designer的汽车爬坡能力建模与仿真

    1. 引言 汽车常常需要在不同区域的不同道路上行驶,尤其在山区道路上,坡陡路窄,汽车必须具有一定的爬坡能力,爬坡能力通常由最大爬坡度来衡量,最大爬坡度是汽车动力性能的重要指标之一.为此开展了基于MAT ...

  9. Matlab App Designer编译打包exe后读取文件路径问题

    首先,标题略长-- 其次,当你看到这个长长的标题并点进来的时候:bro,恭喜你终于找到了一个行之有效的解决方案! ~好了,下面我们言归正传. 关于MATLAB App Designer自身的介绍不是此 ...

最新文章

  1. 专用计算机教室设备,计算机教室专用规章制度
  2. 用100元买100支笔c语言,用C编程!有100块钱,买100支笔,其中钢笔3元,圆珠笔2元,铅笔0.5元,问各买多少支?...
  3. ASP.NET Google Maps Javascript API V3 实战基础篇一检测用户位置
  4. mangos服务器架构
  5. asp.net,Ajax发送异步请求后台修改数据
  6. 爬虫—分析Ajax爬取今日头条图片
  7. 3G手机J2ME开发环境搭建(eclipse3开发j2me环境搭建)
  8. Struts1 和 Struts2
  9. 夜神模拟器连接手柄无反应_夜神模拟器手柄设置
  10. php 图片外链限制,将新浪微博图床图片保存到本地解决限制外链的方法
  11. ArcGis 加载tif,tpk,shp格式文件
  12. 导航算法A*的简单实现
  13. BeautifulSoup中find和find_all的使用
  14. (硬件设计)老工程师的经验之道
  15. MLDonkey,比aMule好的BT软件
  16. NOIP2017旅游(过节)总结
  17. JDBC驱动加载机制详解以及spi机制
  18. VMware虚拟机安装ghost系统
  19. 数据结构课设 词频统计
  20. 卡巴斯基高管发微博劝奇虎周鸿祎:回头是岸

热门文章

  1. 申宝正规股票煤炭股超跌反弹
  2. 如何用python制作小游戏
  3. 一个被忽视的小点——函数的单调性
  4. 养生主——离散数学篇
  5. Google帝国的接班人,凭什么是他?
  6. TypeError: The view function for did not return a valid response. The function either returned None
  7. 【微信】公众号群发相关使用
  8. 双色球投注区分为红球号码区和蓝球号码区,红球号码范围为 01~33,蓝球号码范围为 01~16。双色球每期从 33 个 红球中开出 6 个号码,从 16 个蓝球中开出 1 个号码作为中奖号码,双色球玩
  9. 解酒方法最全妙招 很灵的!
  10. 复旦计算机学院博士张磊,张磊-计算机与信息工程学院官网