如何利用Matlab复刻举牌加油小人生成器
发表于:2025-02-19 作者:千家信息网编辑
千家信息网最后更新 2025年02月19日,这篇文章主要为大家展示了"如何利用Matlab复刻举牌加油小人生成器",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何利用Matlab复刻举牌加油小人生成
千家信息网最后更新 2025年02月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安全错误
数据库的锁怎样保障安全
美国制裁网络安全
杭州互联网科技公司哪几家好
大专联校网络安全竞赛2017
公开数据库如何发文
网络技术收款方式
查看服务器有无定时任务
我国农药登记数据库文件
vs调试时显示数据库
无烬星河数据库有什么用
完美软件开发:方法...
改变查询编辑器的当前数据库
中国电信里机房里的服务器
如何进入别人的服务器
移动网络技术有哪些
慕课大学生数据库期末考试答案
网络安全实验平台有哪些
中国的服务器安全吗
数据库锁表影响
阳江服务器散热片哪里有
网络安全手抄报简单 清晰
锡盟检察分院网络安全
网络技术应用研究生就业
网络安全与技术的应用
如何查手机网页服务器地址
电商网络安全技术如何应用
买糖网络技术
数据库原理与应用形考任务一
网络安全讲座800字感想
电信宽带虚拟服务器设置
服务器死机还能联网吗