快过年了,用MATLAB轻松写出年味满满的金属质感艺术字
Posted slandarer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快过年了,用MATLAB轻松写出年味满满的金属质感艺术字相关的知识,希望对你有一定的参考价值。
我的字好丑。。捂脸
看网上很多ps教程都有,就是先找一张金属球的素材然后在你笔画的路径上绘制无数金属球,就有了艺术字的效果,手痒,用matlab实现了一下,大概效果如下:
使用的方式就是每一笔都不断用鼠标左键取点,想要结束这一笔就在该笔最后一点处改为右键点击:
需要注意的是,需要将以下的金属球素材和m文件放在同一文件夹:
当然如果大家有更好看的金属球也可以将其更换。以下是完整代码:
完整代码:
function metalWord
%@author: slandarer
% 图片导入
[CImg,~,AImg]=imread('ball.png');
% figure窗口构建
froot=get(0);fsize=froot.ScreenSize;
fig=figure('MenuBar','none','Name','metalWord','NumberTitle','off');
fig.Position=[fsize(3)/7,fsize(4)/7,fsize(3)*3/7,fsize(3)*3/7];
% axes坐标区域构建
ax=axes(fig);
hold(ax,'on');
ax.Position=[0 0 1 1];
ax.XTick=[];ax.XLim=[0 100];
ax.YTick=[];ax.YLim=[0 100];
ax.XColor='none';
ax.YColor='none';
ax.Color=[205,46,43]./255;
ax.DataAspectRatio=[1 1 1];
global N
global XSet
global YSet
global tLine
N=0;XSet=[];YSet=[];
% 这个tLine用来绘制提示线条,提示线条形状
tLine=plot(-100,-100,'-o','Color',[20,72,83]./255,'LineWidth',2,'MarkerSize',5,...
'MarkerEdgeColor',[20,72,83]./255,'MarkerFaceColor',[20,72,83]./255);
set(fig,'WindowButtonDownFcn',@bt_down);
function bt_down(~,~)
% 获取点击的位置
mousePos=fig.CurrentPoint./fig.Position(3:4).*100;
switch fig.SelectionType
case 'normal' % 如果点击的是鼠标左键
N=N+1;
XSet=[XSet,mousePos(1)];
YSet=[YSet,mousePos(2)];
if N>1
Tq=linspace(1,N,N*200);
tLine.XData=interp1(1:N,XSet,Tq,'spline');
tLine.YData=interp1(1:N,YSet,Tq,'spline');
else
tLine.XData=XSet;
tLine.YData=YSet;
end
case 'alt' % 如果点击的是鼠标右键
N=N+1;
XSet=[XSet,mousePos(1)];
YSet=[YSet,mousePos(2)];
% 插值并不断用image绘图
if N>=2
Tq=linspace(1,N,N*40);
Xq=interp1(1:N,XSet,Tq,'spline');
Yq=interp1(1:N,YSet,Tq,'spline');
for i=1:length(Tq)
image([-2 2]+Xq(i),[-2 2]+Yq(i),CImg,'AlphaData',AImg);
end
end
N=0;XSet=[];YSet=[];
tLine.XData=-100;
tLine.YData=-100;
end
end
end
要是实在懒得下载图片,复制代码
包含完整代码及金属球素材的压缩包在这:
链接: https://pan.baidu.com/s/1ReDByoNSc0keAeUbV8j4ig?pwd=slan
提取码: slan
其他尝试:
以上是关于快过年了,用MATLAB轻松写出年味满满的金属质感艺术字的主要内容,如果未能解决你的问题,请参考以下文章