利用Matlab复刻举牌加油小人生成器

突然发现cla函数也可以应用到app designer控件上,因而对部分内容做出更改。

手痒,用matlab app designer复刻了一款举牌加油小人生成器,效果如下:

该程序可以生成正方形和长方形举牌小人,并且可以自己设置背景颜色(点击那些有颜色的小框框),点击绿色旋转按钮可以刷新生成的图片。

目前需要存图还是需要通过uiaxes自带的toolbar(下图右上角所示):

使用该程序需要小人的素材包,我已经将素材整理为materials.mat文件,网盘下载链接如下:

链接:https://pan.baidu.com/s/1ISloOsq8bIVDjm8TzRPlKw

提取码:1234

使用时需要把materials.mat和m文件放在同一文件夹

完整代码

function upup
global textMsg bkgColor colorList axesType
global textArea
textMsg=[];
axesType=2;
bkgColor=[1,1,1];
colorList=[0.9000         0    0.0700
    0.9200    0.3300    0.0800
    0.9600    0.6200    0.7500
    0.9600    0.9400    0.5500
    0.7600    0.8400    0.2500
    0.3800    0.7600    0.7300
    0.4700    0.8100    0.9400
    0.6000    0.0500    0.4900
    1         1         1     ];

%load pic and create pic ==================================================
materials=load('materials.mat');
if ~exist('materials','dir')
   mkdir('materials');
end
for i=1:size(colorList,1)
    Rc=zeros(60,60);Rc(11:50,11:50)=255.*colorList(i,1);
    Gc=zeros(60,60);Gc(11:50,11:50)=255.*colorList(i,2);
    Bc=zeros(60,60);Bc(11:50,11:50)=255.*colorList(i,3);
    cPic(:,:,1)=Rc;cPic(:,:,2)=Gc;cPic(:,:,3)=Bc;
    imwrite(uint8(cPic),['materials\bkg',num2str(i),'.png'])
end
imwrite(materials.imgSet.cover,'materials\cover.jpg')
imwrite(materials.imgSet.square,'materials\square.jpg')
imwrite(materials.imgSet.refresh.CData,'materials\refresh.png','Alpha',materials.imgSet.refresh.AData)

%==========================================================================
upFig=uifigure('units','pixels',...
    'position',[320 50 400 600],...
    'Numbertitle','off',...
    'menubar','none',...
    'resize','off',...
    'name','upup',...
    'color',[0.93 0.6 0]);

%==========================================================================
textAreaLabel=uilabel(upFig);
textAreaLabel.Position=[55 445 290 100];
textAreaLabel.Text='';
textAreaLabel.BackgroundColor=[0,0,0];
textArea=uitextarea(upFig,'ValueChangedFcn',@changeText);
textArea.Position=[60 450 280 90];
textArea.FontSize=23;

%text label hdl part=======================================================
textLabel_1=uilabel(upFig);
textLabel_1.Position=[52 517 296 106];
textLabel_1.Text='YOUR MESSAGE HERE';
textLabel_1.FontSize=24;
textLabel_1.FontWeight='bold';
textLabel_1.HorizontalAlignment='center';

textLabel_2=uilabel(upFig);
textLabel_2.Position=[52 367 296 106];
textLabel_2.Text='BACKGROUND COLORS';
textLabel_2.FontSize=24;
textLabel_2.FontWeight='bold';
textLabel_2.HorizontalAlignment='center';

textLabel_3=uilabel(upFig);
textLabel_3.Position=[10 310 60 50];
textLabel_3.Text='SIZE';
textLabel_3.FontSize=20;
textLabel_3.FontWeight='bold';
textLabel_3.HorizontalAlignment='center';

%bkg color hdl part========================================================
for i=1:size(colorList,1)
    CL(i)=uiimage(upFig);
    CL(i).Position=[10+i*35,365,30,30];
    CL(i).UserData=i;
    CL(i).ImageSource=['materials\bkg',num2str(i),'.png'];
end
set(CL,'ImageClickedFcn',@bkgChange)

%reset Size hdl part=======================================================
sizeBtn(1)=uiimage(upFig);
sizeBtn(1).Position=[70 320 168 30];
sizeBtn(1).UserData=1;
sizeBtn(1).ImageSource='materials\cover.jpg';

sizeBtn(2)=uiimage(upFig);
sizeBtn(2).Position=[245 320 80 30];
sizeBtn(2).UserData=2;
sizeBtn(2).ImageSource='materials\square.jpg';
set(sizeBtn,'ImageClickedFcn',@sizeChange)

%==========================================================================
refreshBtn=uiimage(upFig);
refreshBtn.Position=[340 317.5 35 35];
refreshBtn.ImageSource='materials\refresh.png';
set(refreshBtn,'ImageClickedFcn',@changeText)

%==========================================================================
upAx=uiaxes('Units','pixels',...
      'parent',upFig,...
      'Position',[50 10 300 300],...
      'Color',[0.99 0.99 0.99],...
      'Box','on', ...
      'XTick',[],...
      'YTick',[],...
      'XLimMode','manual',...
      'YLimMode','manual',...
      'XLim',[0 300],...
      'YLim',[0 300], ...
      'BackgroundColor',[0,0,0],...
      'YDir','reverse');
hold(upAx,'on')

%==========================================================================

    function bkgChange(~,event)
        objNum=event.Source.UserData;
        upAx.Color=colorList(objNum,:);
    end

    function sizeChange(~,event)
        axesType=event.Source.UserData;
        switch axesType
            case 1
                upAx.Position=[10 120 380 141];
                upAx.XLim=[0 380];
                upAx.YLim=[0 141];
            case 2
                upAx.Position=[50 10 300 300];
                upAx.XLim=[0 300];
                upAx.YLim=[0 300];
        end
    end

    function changeText(~,~)
        cla(upAx)
%         hold(upAx,'off')
%         image(upAx,[-1,0],[-1,0],ones(1,1,3),'visible','off');
%         hold(upAx,'on')
        textMsg=textArea.Value;
        for ii=1:length(textMsg)
            tempStr=textMsg{ii};
            for jj=1:length(tempStr)
                if tempStr(jj)~=' '
                    roleType=randi(24);
                    image(upAx,[0,103*0.4]+110+28*(jj-1)-27*(ii-1),...
                        [0,198*0.4]+10+12*(jj-1)+22*(ii-1),...
                        materials.imgSet.CData{roleType},...
                        'AlphaData',materials.imgSet.AData{roleType},...
                        'Interpolation','bilinear')
                    text(upAx,21+110+28*(jj-1)-27*(ii-1),...
                        10+10+12*(jj-1)+22*(ii-1),...
                        tempStr(jj),'rotation',-38,'FontSize',16,...
                        'FontWeight','bold','Color',[0.4,0.3,0.3],...
                        'FontAngle','italic','HorizontalAlignment','center');
                end
            end
        end
    end
end

另:完整素材包+mat文件+m文件可以在下面下载

百度网盘链接:https://pan.baidu.com/s/1F6Z3_-91_OKtV2zjQUg47Q

注:代码和素材仅作学习用途,勿做他用

若matlab是版本为R2016a以后,R2019a之前,会因为uiimage未被推出而无法正常使用,可以尝试以下代码,该代码依旧需要materials.mat和m文件在同一文件夹:

function upupUiBtn
global textMsg bkgColor colorList axesType
global textArea
textMsg=[];
axesType=2;
bkgColor=[1,1,1];
colorList=[0.9000         0    0.0700
    0.9200    0.3300    0.0800
    0.9600    0.6200    0.7500
    0.9600    0.9400    0.5500
    0.7600    0.8400    0.2500
    0.3800    0.7600    0.7300
    0.4700    0.8100    0.9400
    0.6000    0.0500    0.4900
    1         1         1     ];
%load pic and create pic ==================================================
materials=load('materials.mat');
if ~exist('materials','dir')
   mkdir('materials');
end
for i=1:size(colorList,1)
    Rc=zeros(60,60);Rc(11:50,11:50)=255.*colorList(i,1);
    Gc=zeros(60,60);Gc(11:50,11:50)=255.*colorList(i,2);
    Bc=zeros(60,60);Bc(11:50,11:50)=255.*colorList(i,3);
    cPic(:,:,1)=Rc;cPic(:,:,2)=Gc;cPic(:,:,3)=Bc;
    imwrite(uint8(cPic),['materials\bkg',num2str(i),'.png'])
end
imwrite(materials.imgSet.cover,'materials\cover.jpg')
imwrite(materials.imgSet.square,'materials\square.jpg')
imwrite(materials.imgSet.refresh.CData,'materials\refresh.png','Alpha',materials.imgSet.refresh.AData)

%==========================================================================
upFig=uifigure('units','pixels',...
    'position',[320 50 400 600],...
    'Numbertitle','off',...
    'menubar','none',...
    'resize','off',...
    'name','upup',...
    'color',[0.93 0.6 0]);

%==========================================================================
textAreaLabel=uilabel(upFig);
textAreaLabel.Position=[55 445 290 100];
textAreaLabel.Text='';
textAreaLabel.BackgroundColor=[0,0,0];
textArea=uitextarea(upFig,'ValueChangedFcn',@changeText);
textArea.Position=[60 450 280 90];
textArea.FontSize=23;

%text label hdl part=======================================================
textLabel_1=uilabel(upFig);
textLabel_1.Position=[52 517 296 106];
textLabel_1.Text='YOUR MESSAGE HERE';
textLabel_1.FontSize=24;
textLabel_1.FontWeight='bold';
textLabel_1.HorizontalAlignment='center';

textLabel_2=uilabel(upFig);
textLabel_2.Position=[52 367 296 106];
textLabel_2.Text='BACKGROUND COLORS';
textLabel_2.FontSize=24;
textLabel_2.FontWeight='bold';
textLabel_2.HorizontalAlignment='center';

textLabel_3=uilabel(upFig);
textLabel_3.Position=[10 310 60 50];
textLabel_3.Text='SIZE';
textLabel_3.FontSize=20;
textLabel_3.FontWeight='bold';
textLabel_3.HorizontalAlignment='center';

%bkg color hdl part========================================================
for i=1:size(colorList,1)
    CL(i)=uibutton(upFig);
    CL(i).Position=[10+i*35,365,30,30];
    CL(i).BackgroundColor=[0 0 0];
    CL(i).Text='';
    CL(i).UserData=i;
    CL(i).Icon=['materials\bkg',num2str(i),'.png'];
end
set(CL,'ButtonPushedFcn',@bkgChange)

%reset Size hdl part=======================================================
sizeBtn(1)=uibutton(upFig);
sizeBtn(1).Position=[80 320 145 32];
sizeBtn(1).UserData=1;
sizeBtn(1).Text='';
sizeBtn(1).BackgroundColor=[0 0 0];
sizeBtn(1).Icon='materials\cover.jpg';

sizeBtn(2)=uibutton(upFig);
sizeBtn(2).Position=[235 320 78 32];
sizeBtn(2).UserData=2;
sizeBtn(2).Text='';
sizeBtn(2).BackgroundColor=[0 0 0];
sizeBtn(2).Icon='materials\square.jpg';
set(sizeBtn,'ButtonPushedFcn',@sizeChange)

refreshBtn=uibutton(upFig);
refreshBtn.Position=[330 318 35 35];
refreshBtn.Text='';
refreshBtn.BackgroundColor=[0.93 0.6 0];
refreshBtn.Icon='materials\refresh.png';
set(refreshBtn,'ButtonPushedFcn',@changeText)
%==========================================================================
upAx=uiaxes('Units','pixels',...
      'parent',upFig,...
      'Position',[50 10 300 300],...
      'Color',[0.99 0.99 0.99],...
      'Box','on', ...
      'XTick',[],...
      'YTick',[],...
      'XLimMode','manual',...
      'YLimMode','manual',...
      'XLim',[0 300],...
      'YLim',[0 300], ...
      'BackgroundColor',[0,0,0],...
      'YDir','reverse');
hold(upAx,'on')

%==========================================================================

    function bkgChange(~,event)
        objNum=event.Source.UserData;
        upAx.Color=colorList(objNum,:);
    end

    function sizeChange(~,event)
        axesType=event.Source.UserData;
        switch axesType
            case 1
                upAx.Position=[10 120 380 141];
                upAx.XLim=[0 380];
                upAx.YLim=[0 141];
            case 2
                upAx.Position=[50 10 300 300];
                upAx.XLim=[0 300];
                upAx.YLim=[0 300];
        end
    end

    function changeText(~,~)
        cla(upAx)
%         hold(upAx,'off')
%         image(upAx,[-1,0],[-1,0],ones(1,1,3),'visible','off');
%         hold(upAx,'on')
        textMsg=textArea.Value;
        for ii=1:length(textMsg)
            tempStr=textMsg{ii};
            for jj=1:length(tempStr)
                if tempStr(jj)~=' '
                    roleType=randi(24);
                    image(upAx,[0,103*0.4]+110+28*(jj-1)-27*(ii-1),...
                        [0,198*0.4]+10+12*(jj-1)+22*(ii-1),...
                        materials.imgSet.CData{roleType},...
                        'AlphaData',materials.imgSet.AData{roleType},...
                        'Interpolation','bilinear')
                    text(upAx,21+110+28*(jj-1)-27*(ii-1),...
                        10+10+12*(jj-1)+22*(ii-1),...
                        tempStr(jj),'rotation',-38,'FontSize',16,...
                        'FontWeight','bold','Color',[0.4,0.3,0.3],...
                        'FontAngle','italic','HorizontalAlignment','center');
                end
            end
        end
    end
end

非uiimage版按钮长这样:

以上就是利用Matlab复刻举牌加油小人生成器的详细内容,更多关于Matlab举牌加油小人生成器的资料请关注我们其它相关文章!

(0)

相关推荐

  • 使用Matlab制作简易版八分音符酱游戏

    目录 效果 游戏方式 说明 工具箱主要部分代码 完整代码 效果 游戏方式 给电脑插上耳机后叫喊叭 ! 说明 1)使用此代码应首先安装: Audio Toolbox工具箱,博主使用的版本为: Audio Toolbox 版本 3.0 (R2021a) 2)为保证游戏加载完所有素材后再开始,故设置了加载完成界面后停滞3秒再开始运行游戏 若一进入界面就挂了,应是资源加载太久,请关掉窗口后尝试重新运行 工具箱主要部分代码 1)基础设置 这里懒得改了直接照抄的语音命令识别的截断数据,大家可以依据自己需要进

  • Python趣味实战之手把手教你实现举牌小人生成器

    Selenium库的安装与简单使用  1. 安装selenium库 pip install selenium 结果如下: 2. chromedriver驱动的配置 如果你想要驱动谷歌浏览器,自动打开浏览器,必须匹配chromedriver驱动,否则会报错. 配置chromedriver驱动,一定要注意 "驱动" 和 "谷歌浏览器" 版本一定是要相匹配,否则不能使用. ① 检查谷歌浏览器的版本 这里首先提供一个详细的地址供大家查看: https://jingyan.b

  • 教你使用Matlab制作图形验证码生成器(app designer)

    目录 1字符图片生成 2刷新按钮生成 3图片处理 3.1图像任意方向拉伸 3.2字符边缘 3.3图像处理部分代码 4线条和散点生成 5关于图像存储 6关于验证码对比 7完整代码 突然发现cla函数也可以应用到app designer控件上,因而对部分内容做出更改,将绘制隐藏像素刷新的方式改为用cla 原 hold(acAxes,'off'); image(acAxes,[-1,0],[-1,0],ones(1,1,3),'visible','off'); hold(acAxes,'on'); d

  • Matlab绘制中国地图超全教程详解

    目录 各省边界线绘图 省份填色图 中国公路交通图 中国铁路交通图 中国河流图 组合美化图 美化图一 美化图二 依旧需要用到Mapping Toolbox不会安装的可以看我上一篇 虽然我们只读取shp文件,但需要保证文件夹里还有shx文件及dbf文件 各省边界线绘图 provinces=shaperead('bou2_4l.shp','UseGeoCoords',true); % 绘图 worldmap('China'); geoshow(provinces) 省份填色图 provinces=sh

  • 利用Matlab制作一款刮刮乐抽奖特效

    目录 1.效果展示 2.程序原理说明 2.1奖项设置 2.2随机抽取 2.3绘制图层 2.4滑动鼠标刮奖 3.完整代码 1.效果展示 程序运行效果如下: 如图所示,按住鼠标不松开并滑动鼠标,即可刮开图层: 2.程序原理说明 2.1 奖项设置 奖项设置写在一个cell元胞数组中,第一列为文本信息,第二列为抽到的概率: strSet={'520元红包一个',15/100; '1314元红包一个',5/100; '黑丝水手服',20/100; '黑丝女仆装',20/100; '抱抱×50次',20/1

  • 利用Matlab绘制一个可爱的南瓜灯

    目录 效果及原理 原理 实现方法 完整代码 效果及原理 效果如下: 调一下数据还能改成三角眼: 原理 南瓜主体函数从知友 [九章算法] 的一张图而来,大体是瓜身瓜柄分段函数,然后绕着z轴旋转一周得到曲面,我对数值做了微调,原图及原始数据: 实现方法 这里我故意保留了网格让南瓜看起来有一点布娃娃的感觉,(大家也可以根据自己喜好改写,例如将’EdgeColor’设置为’none’并打个光啥的) % 构造网格 [t,p]=meshgrid(linspace(0,2*pi,200),linspace(0

  • 利用Matlab复刻举牌加油小人生成器

    突然发现cla函数也可以应用到app designer控件上,因而对部分内容做出更改. 手痒,用matlab app designer复刻了一款举牌加油小人生成器,效果如下: 该程序可以生成正方形和长方形举牌小人,并且可以自己设置背景颜色(点击那些有颜色的小框框),点击绿色旋转按钮可以刷新生成的图片. 目前需要存图还是需要通过uiaxes自带的toolbar(下图右上角所示): 使用该程序需要小人的素材包,我已经将素材整理为materials.mat文件,网盘下载链接如下: 链接:https:/

  • 利用Matlab复刻羊了个羊小游戏

    目录 效果 完整代码 今天就是国赛的第一天 直接开摆 打国赛不如玩羊了个羊 玩羊了个羊不如玩MATLAB版 写作不易留个赞叭(比赛之余放松一下也行,反正MATLAB版我设置的是可以无限刷新...早晚能赢) 效果 完整代码 看效果就知道肯定用来相关素材包,因此只有代码无法运行,需要m文件所在文件夹存在羊了个羊素材包material.mat,素材包放在文末: function sheeeppp % @author : slandarer % gzh : slandarer随笔 clc;clear m

  • 利用Matlab复刻扫雷小游戏

    效果图 点击帮助切换插旗功能: 游戏失败: 完整代码 function SLsXpbombs global Row; Row=10;%雷区行数 global Col; Col=10;%雷区列数 global MineMap; MineMap=[]; %地雷图 global aroundMap;aroundMap=[];%周围地雷数 global MarkMap; MarkMap=ones([Row,Col]); %标记图 global MineNum; MineNum=8;%地雷总数 globa

  • 利用Matlab复刻两款粒子爱心动画效果

    目录 粒子爱心1 效果图 粒子爱心2 效果图 粒子爱心1 function particleHeart1 % @author : slandarer % 调整背景及比例 ax=gca;hold on ax.DataAspectRatio=[1,1,1]; ax.XLim=[-25,25]; ax.YLim=[-25,20]; ax.Color=[0,0,0]; ax.XColor='none'; ax.YColor='none'; set(gcf,'Color',[0,0,0]); % 散点位置

  • 利用Jetpack Compose复刻游戏Flappy Bird

    目录 1.拆解游戏 2.复刻画面 ⅰ.布置远近景 ⅱ.摆放管道 ⅲ.放置小鸟 3.状态管理和架构 4.路面动起来 5.管道动起来 6.小鸟飞起来 7.碰撞和实时分值 8.结束分值和重新开始 9.最终效果 Flappy Bird是13年红极一时的小游戏,其简单有趣的玩法和变态的难度形成了强烈反差,引发全球玩家竞相把玩,欲罢不能!遂选择复刻这个小游戏,在实现的过程中向大家演示Compose工具包的UI组合.数据驱动等重要思想. 1.拆解游戏 不记得这个游戏或完全没玩过的朋友,可以点击下面的链接,体验

  • 利用Matlab绘制好看的旋转九边形

    目录 PART.0 使用效果 PART.1 程序说明 PART.2 完整代码 PART.0 使用效果 PART.1 程序说明 这个代码主要复刻的Clayton Shonkwiler使用Wolfram绘制的作品(二十个旋转的正九变形),据说其灵感来源于Thomas Davis的一些作品,Clayton Shonkwiler的更多作品可以在这个地址查看 PART.2 完整代码 function nonagon20 % @author:slandarer % axes属性设置 ax=gca; hold

  • 利用Matlab制作一款狗头翻牌子小游戏

    目录 0游戏效果 1fig界面和背景板 2狗狗牌子与胜利标志 2.1狗狗牌子绘制 2.2游戏胜利标签 2.3鼠标点击牌子回调 3游戏难度按钮组 3.1按钮绘制 3.2难度选择回调 4游戏刷新模块 4.1刷新游戏按钮绘制 4.2模拟鼠标点击 4.3刷新游戏回调 5完整代码 0 游戏效果 就是点击一个牌子时,该牌子和周围四个牌子也会相应发生变化,想办法让所有牌子都在同一面即为游戏胜利. 1 fig界面和背景板 这一段比较简单,主要是对界面和背景板的属性设置,我们采用编程的方式调用app design

  • 利用Matlab绘制好看的弦图

    目录 封面图 使用教程 1.数据格式 2.修饰弦 3.圆弧状方块修饰 4.字体调整 5.显示和隐藏刻度 工具函数完整代码 封面图绘制代码 封面一 封面二 弦图在python中以及R中非常常见,但是MATLAB中却始终没有相关函数,file exchange中也没有工作做的较为完备的弦图绘制函数(不过现在有了,我已经往上面也传了一份hiahiahia) 仅工具函数主体部分约300行,字符数约8000,能画出与R语言同等质量的弦图实属不易,希望能有个`点赞``!!! 由于工具函数过长,将被放在最后展

  • 如何利用Matlab制作一款真正的拼图小游戏

    效果: 简单原理介绍: 1构造0,1矩阵作为每片拼图的透明度,可以构造出不规则形状的拼图(image函数有alphaData属性可以设置) jigsawMask=zeros(101*5,101*5); jigsawMask(102:404,102:404)=1; [xMesh,yMesh]=meshgrid(1:101*5,1:101*5); dis1=sqrt((xMesh-51).^2+(yMesh-253).^2); dis2=sqrt((xMesh-505+50).^2+(yMesh-2

随机推荐