快过年了,用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轻松写出年味满满的金属质感艺术字的主要内容,如果未能解决你的问题,请参考以下文章

我怀念,小时候的年味

iPad Pro,健身年卡,充电宝....今年在福安过年的你有福了!

如何在场景套件中显示金属质感

PS 金属质感文字制作

快过年了,用Python写副春联&福字送给你~

快过年了,用Python写副春联&福字送给你~