您当前的位置: 首页 >  matlab

slandarer

暂无认证

  • 0浏览

    0关注

    248博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

MATLAB 屏幕颜色提取器(无须导入图片即可取色)

slandarer 发布时间:2020-09-01 16:43:16 ,浏览量:0

在学习MATLAB java混编,有一个不错的实例就是屏幕颜色提取器,毕竟matlab如果不调用java库的话实现这个功能还是比较难的,而且比较慢。 已有的屏幕颜色提取器基本上是按一个按钮之后等待几秒然后取当前鼠标位置屏幕上的颜色,但是出于个人使用方便和保证颜色的精确度,我选择还是那种边移动边取色的提取器,效果大概这个样:

在这里插入图片描述

.

功能及使用方式介绍

从动态图就可以我们可以不断地提取鼠标所到处的颜色,可以通过按键A来使其开始或停止取色,同时会显示颜色相关的三种类型数据:

.

通过按键S可以暂时存储颜色,按键C删除存储的颜色:

.

按键D 将当前颜色复制到剪切板,格式: 在这里插入图片描述 . 最下方为基础颜色库,为了方便分享数据直接写在m文件里了,想要改善可以自己写个mat文件, 基础颜色库:

.

完整界面

.

上下文菜单

对于2021a以后版本,增添了上下文菜单,更改了timer停止机制:

.

如图所示,右键颜色块会显示颜色相关数据,点击相关数据则能将其复制到剪切板。

.

完整代码
function getScreenColor
import java.awt.MouseInfo;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.datatransfer.StringSelection;

%CSC: get screen color
global CSCFig CSCAxes 
global CSCDispLabel255 CSCDispLabel1 CSCDispLabel16
global CSCDispDatal255 CSCDispDatal1  CSCDispDatal16
global CSCFuncDispLabel
global CSCColorStoreLabel CSCBaseColorStoreLabel
global colorStoreBkg colorStore baseColorStoreBkg baseColorStore
global selector

selector.presentColor=[255 255 255];
selector.color255='255 255 255';
selector.color01='1.00 1.00 1.00';
selector.color16='#FFFFFF';
selector.enable=1;
selector.colorList=ones(20,3);
selector.colorNum=0;
selector.listNum=2;
baseColorList=[ 25 202 173;140 199 181;160 238 225;190 231 233;190 237 199;
               214 213 183;209 186 116;230 206 172;236 173 158;244  96 108;
                 0 197 205;102 205 170;121 205 205;187 255 255;255 250 240;
               253 245 230;250 240 230;250 235 215;255 235 205;255 218 185;
                24 116 205;122 103 238;159 121 238; 79 148 205;209  95 238;
               205 150 205;255 174 185;255 130 171;205  96 144;205  50 120;
               230 230 250;240 248 255;255 245 238;240 255 240;245 255 250;
               255 255 240;255 250 205];



%mousepoint=MouseInfo.getPointerInfo().getLocation();
%robot=Robot();
%tempColor=robot.getPixelColor(mousepoint.x, mousepoint.y);
%RGBColor=[tempColor.getRed(),tempColor.getGreen(),tempColor.getBlue()]
%==========================================================================
CSCFig=uifigure('units','pixels',...
    'position',[10 280 300 400],...
    'Numbertitle','off',...
    'menubar','none',...
    'resize','off',...
    'name','getScreenColor 1.0',...
    'color',[1,1,1].*0.97);
CSCAxes=uiaxes('Units','pixels',...
      'parent',CSCFig,...
      'PlotBoxAspectRatio',[1 1 1],...
      'Position',[10 400-10-120 120 120],...
      'Color',[0.99 0.99 0.99],...
      'Box','on', ...
      'XLim',[0 1],'YLim',[0 1],...
      'XTick',[],'YTick',[]);
  
CSCDispLabel255=uilabel(CSCFig,'Text','  0-255','HorizontalAlignment','left',...
    'BackgroundColor',[1 1 1].*0.8,'Position',[130+10,400-10-30-5,140,30],'FontSize',13);
CSCDispLabel1=uilabel(CSCFig,'Text','  0 - 1','HorizontalAlignment','left',...
    'BackgroundColor',[1 1 1].*0.8,'Position',[130+10,400-10-30-40-5,140,30],'FontSize',13);
CSCDispLabel16=uilabel(CSCFig,'Text','  # 16','HorizontalAlignment','left',...
    'BackgroundColor',[1 1 1].*0.8,'Position',[130+10,400-10-30-80-5,140,30],'FontSize',14);

CSCFuncDispLabel=uilabel(CSCFig,'Text','  A:开始/停止取色  S:储存颜色  D:复制到粘贴板','HorizontalAlignment','left',...
    'BackgroundColor',[0.95 0.95 0.95],'Position',[10,240,280,30],'FontSize',12.5,'FontColor',[0.35 0.35 0.35],'FontWeight','bold');

CSCDispDatal255=uieditfield(CSCFig,'Value','255 255 255','HorizontalAlignment','center','Position',[130+10+45,400-10-30-5,95,30]);
CSCDispDatal1=uieditfield(CSCFig,'Value','1.00 1.00 1.00','HorizontalAlignment','center','Position',[130+10+45,400-10-30-40-5,95,30]);
CSCDispDatal16=uieditfield(CSCFig,'Value','#FFFFFF','HorizontalAlignment','center','Position',[130+10+45,400-10-30-80-5,95,30]);
%--------------------------------------------------------------------------
CSCColorStoreLabel=uilabel(CSCFig,'Text',' 自定义颜色(按键C删除):','HorizontalAlignment','left','VerticalAlignment','top',...
    'BackgroundColor',[1 1 1].*0.9,'Position',[15,160,275,80],'FontSize',13,'FontColor',[0.3 0.3 0.35],'FontWeight','bold');
for i=1:2
    for j=1:10
        colorStoreBkg(i,j)=uilabel(CSCFig,'Text','','BackgroundColor',[1 1 1].*0.7,...
            'Position',[18+(j-1)*27-1+1,192-(i-1)*27-1,24,24]);
        colorStore(i,j)=uilabel(CSCFig,'Text','','BackgroundColor',[1 1 1],...
            'Position',[18+(j-1)*27+1,192-(i-1)*27,22,22]);
    end
end
%--------------------------------------------------------------------------
CSCBaseColorStoreLabel=uilabel(CSCFig,'Text',' 基础颜色库:','HorizontalAlignment','left','VerticalAlignment','top',...
    'BackgroundColor',[1 1 1].*0.9,'Position',[15,10,275,135],'FontSize',14,'FontColor',[0.3 0.3 0.35],'FontWeight','bold');
for i=1:4
    for j=1:10
        if (i-1)*10+j            
关注
打赏
1664692598
查看更多评论
0.0449s