如何利用Matlab复刻举牌加油小人生成器
发表于:2024-11-19 作者:千家信息网编辑
千家信息网最后更新 2024年11月19日,这篇文章主要为大家展示了"如何利用Matlab复刻举牌加油小人生成器",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何利用Matlab复刻举牌加油小人生成
千家信息网最后更新 2024年11月19日如何利用Matlab复刻举牌加油小人生成器
这篇文章主要为大家展示了"如何利用Matlab复刻举牌加油小人生成器",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何利用Matlab复刻举牌加油小人生成器"这篇文章吧。
突然发现cla函数也可以应用到app designer控件上,因而对部分内容做出更改。
手痒,用matlab app designer复刻了一款举牌加油小人生成器,效果如下:
该程序可以生成正方形和长方形举牌小人,并且可以自己设置背景颜色(点击那些有颜色的小框框),点击绿色旋转按钮可以刷新生成的图片。
目前需要存图还是需要通过uiaxes自带的toolbar(下图右上角所示):
使用该程序需要小人的素材包,我已经将素材整理为materials.mat文件,网盘下载链接如下:
链接:https://pan.baidu.com/s/1ISloOsq8bIVDjm8TzRPlKw
提取码:1234
使用时需要把materials.mat和m文件放在同一文件夹
完整代码
function upupglobal textMsg bkgColor colorList axesTypeglobal textAreatextMsg=[];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');endfor 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']) endimwrite(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'];endset(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 endend
另:完整素材包+mat文件+m文件可以在下面下载
百度网盘链接:https://pan.baidu.com/s/1F6Z3_-91_OKtV2zjQUg47Q
注:代码和素材仅作学习用途,勿做他用
另
若matlab是版本为R2016a以后,R2019a之前,会因为uiimage未被推出而无法正常使用,可以尝试以下代码,该代码依旧需要materials.mat和m文件在同一文件夹:
function upupUiBtnglobal textMsg bkgColor colorList axesTypeglobal textAreatextMsg=[];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');endfor 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']) endimwrite(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'];endset(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 endend
非uiimage版按钮长这样:
以上是"如何利用Matlab复刻举牌加油小人生成器"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
文件
小人
生成
生成器
代码
内容
素材
篇文章
链接
学习
按钮
文件夹
程序
颜色
帮助
下图
他用
函数
图片
控件
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
我的世界月狐服务器怎么下载
股票需要整理数据库
计算及网络技术学什么
长岛游戏软件开发哪家好
网上骗子说他是做软件开发的
代理服务器ip和端口
知众互联网络技术有限公司
大型服务器 配置
广州定制软件开发报价
网络安全和web开发
node怎么写数据库验证
嵌入式软件开发工程师要学什么
增加单个服务器的最大连接次数
生产企业数据库
微软软件开发广告
服务器芯片力源信息
腾讯云服务器开启maf
sun服务器管理手册
微沸网络技术应用
连接数据库出现关键字
短视频软件开发工具
大学生软件开发创业电影
互联网科技基金值得持有吗
gpu服务器品牌
网络安全三管三必须原则指的是
网络安全周公益宣传防骗十讲
文本数据库驱动1中的错误
白帽子讲解网络安全下载
网络安全事故发生三个原因
计算机网络技术和后端开发