暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Matlab-取色GUI-Color3.0

Matlab随笔 2021-08-25
569
我做了一款取色GUI,名为Color,目前为3.0版本,欢迎大家使用,我对2.0做了很多改变,这次将重新介绍这款GUI。

1.Color3.0的界面及使用

界面及使用概况见上面动图自定义”界面主要实现取色及保存颜色“GUI”预置界面内置了许多配色,这些配色来着网站ColorBrewer,网站界面如下:

Color3.0还内置了建议界面,你的建议将通过我的小号QQ向我的大号QQ发送信息,关于Matlab发送邮件,可以参考以下文章:①.Matlab-程序进度提醒②.Matlab-定时器的使用


2.Color3.0的代码实现

①界面搭建:这里要说一下matlab GUI界面的搭建方式,一种是拖控件的方式,一种是用代码写控件的方式,我选择了后者,这也是有些读者找不到fig文件的原因所在。关于这部分内容,我之后的文章会涉及到。


②对按键如何响应

    % 这里需要用到'KeyPressFcn'绑定响应函数
    GUI.h=figure('Name','Color3.0','Position',[450,160,580,450],...
    'Numbertitle','on','KeyPressFcn',@keyPressFcn);

    function keyPressFcn(~,event)
    switch event.Key
    case 'a'
    getcolor;
    GUI.axes1.Color=RGBColor./255;
    end
    end


    ③如何取色

          import java.awt.MouseInfo;
      import java.awt.Robot;
      import java.awt.Toolkit;
      import java.awt.datatransfer.StringSelection;

      robot=Robot();
      mousepoint=MouseInfo.getPointerInfo().getLocation();
      tempColor=robot.getPixelColor(mousepoint.x, mousepoint.y);
      RGBColor=[tempColor.getRed(),tempColor.getGreen(),tempColor.getBlue()];


      ④动态绘制button

      参见文章Matlab-动态构建GUI

      补充:对于动态绘制的控件,之前我不知道如何获取其句柄值,现在我找到了答案,你需要对每个控件设置tag属性,标识不同的控件,然后采用下面的代码即可。

        GUI=guihandles(GUI.h);

        Color2.0版本对颜色的保存、删除都是加载数据、重新画了一遍button,Color3.0版本对此做了优化,现在只画一遍button,利用句柄值来改变按钮颜色。


        ⑤坐标框的bug修改

        主界面有一个坐标框,用于显示颜色,如果不关闭Color2.0,在matlab中的绘图会画到这个坐标框中。Color3.0对此做了优化,代码如下:

          set(GUI.h,'HandleVisibility','off');


          经测试,Color3.0在Matlab 2014b和Matlab 2021a均可正常运行,2014版本(低版本)需要点击界面空白处后才可取色,而2021版本(高版本)直接使用即可。

          GUI获取方式:后台回复"Color3.0"即可

          源码获取方式:请分享本文至微信或QQ朋友圈,将截图发至后台,我尽量在24h内回复你。

          文章转载自Matlab随笔,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

          评论