MATLAB绘制“问题儿童表情包”动图2

动图效果:
在这里插入图片描述
代码如下:

filename = '问题儿童.gif';
% 创建图形窗口并设置属性 
hFigure=figure('menubar','none','NumberTitle','off','position',... 
    [100 100 350 400],'name','问题儿童'); 
movegui(hFigure,'center');%居中 
%创建坐标轴,用于显示背景图片和文本 
hAxes=axes('visible','off','units','normalized','position',[0 0 1 1]);

%% 方块
rectangle('Position',[-26,65,52,46],'Curvature',[0.2 0.2],'edgecolor','k','facecolor','y','linewidth',3);
hold on
rectangle('Position',[-23,104,3,3],'Curvature',[1 1],'edgecolor','k','facecolor','k');
rectangle('Position',[20,104,3,3],'Curvature',[1 1],'edgecolor','k','facecolor','k');
rectangle('Position',[-23,70,3,3],'Curvature',[1 1],'edgecolor','k','facecolor','k');
rectangle('Position',[20,70,3,3],'Curvature',[1 1],'edgecolor','k','facecolor','k');

%% 头
theta=0:0.01:2*pi;
x=50*cos(theta); y=48*sin(theta);
h=plot(x,y,'k','linewidth',6);
h1=fill(x,y,'w');

%% 眼睛
theta=0:0.01:pi;
xL1=-20+8*cos(theta); yL1=6+9*sin(theta);
hL1=plot(xL1,yL1,'k','linewidth',3,'EraseMode','xor');

theta=0:0.01:pi;
xR1=20+8*cos(theta); yR1=6+9*sin(theta);
hR1=plot(xR1,yR1,'k','linewidth',3,'EraseMode','xor');

%% 嘴
x2=[0 -7 7 0]; y2=[-10 1 1 -10];
h2=plot(x2,y2,'k','linewidth',3,'EraseMode','xor');

%% 身体
x3=[28 35 -35 -28]; y3=[-39 -90 -90 -39];
h3=plot(x3,y3,'k','linewidth',5,'EraseMode','xor');
h31=fill(x3,y3,'w');

x32=[28 -28]; y32=[-39 -39];
h32=plot(x32,y32,'w','linewidth',5,'EraseMode','xor');

%% 爱心
t=linspace(-3,3,50);
x4=10+8*(sin(t)).^3;
y4=165+6.5*cos(t)-2.5*cos(2*t)-1*cos(3*t)-0.5*cos(4*t);

axis equal

strCell={'?','爱','你','呦'}; 

for k=1:9
    if k==1
        set(h,'xdata',x,'ydata',y);
        set(h1,'xdata',x,'ydata',y);
        set(hL1,'xdata',xL1,'ydata',yL1);
        set(hR1,'xdata',xR1,'ydata',yR1);
        set(h2,'xdata',x2,'ydata',y2);
        set(h3,'xdata',x3,'ydata',y3);
        set(h31,'xdata',x3,'ydata',y3);
        set(h32,'xdata',x32,'ydata',y32);
        strTemp=strCell{1};%取每一条诗句 
        str=[strTemp;10*ones(1,length(strTemp))];%在每句后添加一个换行符 
        str=str(:)';%获取添加了换行符的诗句字符串
        str1=str(1);%获取一句中的每个字 
        t=text('Horizontal','right',... 
            'FontName','宋体','FontSize',35,'Color','k');
        set(t,'string',str1,'position',[8 90],'EraseMode','none'); 
    end
    if k==2
        set(h,'xdata',x,'ydata',y+15);
        set(h1,'xdata',x,'ydata',y+15);
        set(hL1,'xdata',xL1,'ydata',yL1+15);
        set(hR1,'xdata',xR1,'ydata',yR1+15);
        set(h2,'xdata',x2,'ydata',y2+15);
        set(h3,'xdata',x3,'ydata',y3+15);
        set(h31,'xdata',x3,'ydata',y3+15);
        set(h32,'xdata',x32,'ydata',y32+15);
        strTemp=strCell{2};%取每一条诗句 
        str=[strTemp;10*ones(1,length(strTemp))];%在每句后添加一个换行符 
        str=str(:)';%获取添加了换行符的诗句字符串
        str1=str(1);%获取一句中的每个字 
        t=text('Horizontal','right',... 
            'FontName','华文行楷','FontSize',30,'Color','k');
        set(t,'string',str2,'position',[10 160],'EraseMode','none'); 
    end
    if k==3
        set(h,'xdata',x,'ydata',y);
        set(h1,'xdata',x,'ydata',y);
        set(hL1,'xdata',xL1,'ydata',yL1);
        set(hR1,'xdata',xR1,'ydata',yR1);
        set(h2,'xdata',x2,'ydata',y2);
        set(h3,'xdata',x3,'ydata',y3);
        set(h31,'xdata',x3,'ydata',y3);
        set(h32,'xdata',x32,'ydata',y32);
        set(t,'string',str2,'position',[-15 130],'EraseMode','none');
    end
    if k==4
        set(h,'xdata',x,'ydata',y+15);
        set(h1,'xdata',x,'ydata',y+15);
        set(hL1,'xdata',xL1,'ydata',yL1+15);
        set(hR1,'xdata',xR1,'ydata',yR1+15);
        set(h2,'xdata',x2,'ydata',y2+15);
        set(h3,'xdata',x3,'ydata',y3+15);
        set(h31,'xdata',x3,'ydata',y3+15);
        set(h32,'xdata',x32,'ydata',y32+15);
        strTemp=strCell{3};%取每一条诗句 
        str=[strTemp;10*ones(1,length(strTemp))];%在每句后添加一个换行符 
        str=str(:)';%获取添加了换行符的诗句字符串
        str3=str(1);%获取一句中的每个字 
        t=text('Horizontal','right',... 
            'FontName','华文行楷','FontSize',30,'Color','k');
        set(t,'string',str3,'position',[10 160]); 
    end
    if k==5      
        set(h,'xdata',x,'ydata',y);
        set(h1,'xdata',x,'ydata',y);
        set(hL1,'xdata',xL1,'ydata',yL1);
        set(hR1,'xdata',xR1,'ydata',yR1);
        set(h2,'xdata',x2,'ydata',y2);
        set(h3,'xdata',x3,'ydata',y3);
        set(h31,'xdata',x3,'ydata',y3);
        set(h32,'xdata',x32,'ydata',y32);
        set(t,'string',str3,'position',[10 130]);
    end
    if k==6
        set(h,'xdata',x,'ydata',y+15);
        set(h1,'xdata',x,'ydata',y+15);
        set(hL1,'xdata',xL1,'ydata',yL1+15);
        set(hR1,'xdata',xR1,'ydata',yR1+15);
        set(h2,'xdata',x2,'ydata',y2+15);
        set(h3,'xdata',x3,'ydata',y3+15);
        set(h31,'xdata',x3,'ydata',y3+15);
        set(h32,'xdata',x32,'ydata',y32+15);
        strTemp=strCell{4};%取每一条诗句 
        str=[strTemp;10*ones(1,length(strTemp))];%在每句后添加一个换行符 
        str=str(:)';%获取添加了换行符的诗句字符串
        str4=str(1);%获取一句中的每个字 
        t=text('Horizontal','right',... 
            'FontName','华文行楷','FontSize',30,'Color','k');
        set(t,'string',str4,'position',[10 160]);         
    end
    if k==7
        set(h,'xdata',x,'ydata',y);
        set(h1,'xdata',x,'ydata',y);
        set(hL1,'xdata',xL1,'ydata',yL1);
        set(hR1,'xdata',xR1,'ydata',yR1);
        set(h2,'xdata',x2,'ydata',y2);
        set(h3,'xdata',x3,'ydata',y3);
        set(h31,'xdata',x3,'ydata',y3);
        set(h32,'xdata',x32,'ydata',y32);
        set(t,'string',str4,'position',[35 130]);
    end
    if k==8
        set(h,'xdata',x,'ydata',y+15);
        set(h1,'xdata',x,'ydata',y+15);
        set(hL1,'xdata',xL1,'ydata',yL1+15);
        set(hR1,'xdata',xR1,'ydata',yR1+15);
        set(h2,'xdata',x2,'ydata',y2+15);
        set(h3,'xdata',x3,'ydata',y3+15);
        set(h31,'xdata',x3,'ydata',y3+15);
        set(h32,'xdata',x32,'ydata',y32+15);
        h41=plot(x4,y4,'k','linewidth',4,'EraseMode','xor');
        h42=fill(x4,y4,'r');
    end
    if k==9
        set(h,'xdata',x,'ydata',y);
        set(h1,'xdata',x,'ydata',y);
        set(hL1,'xdata',xL1,'ydata',yL1);
        set(hR1,'xdata',xR1,'ydata',yR1);
        set(h2,'xdata',x2,'ydata',y2);
        set(h3,'xdata',x3,'ydata',y3);
        set(h31,'xdata',x3,'ydata',y3);
        set(h32,'xdata',x32,'ydata',y32);
        set(h41,'xdata',x4+40,'ydata',y4-35);
        set(h42,'xdata',x4+40,'ydata',y4-35);
    end
    
    axis equal
    axis off;%关闭坐标轴显示
    axis([-90 90 -74 180]);
    drawnow; % 刷新屏幕
    pause(0.2)
    
%下面语句是将静态图像的每一帧进行叠加存储,并写入到filename文件夹中
f=getframe(gcf);
imind=frame2im(f);
[imind,cm] = rgb2ind(imind,256);
if k==1
imwrite(imind,cm,filename,'gif', 'Loopcount',inf,'DelayTime',0.2);
else
imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',0.2);
end

end
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值