SOGO論壇
  登入   註冊   找回密碼
查看: 1720|回覆: 0
列印 上一主題 下一主題

[技術文章] MATLAB 創建跑馬燈 [複製連結]

Rank: 4

數位軟體勳章

狀態︰ 離線
跳轉到指定樓層
1
發表於 2013-12-22 09:33:49 |只看該作者 |倒序瀏覽
MATLAB 超強功能!數學演算軟體  2D  3D  畫圖,自動控制  通訊  建模模擬,各式工程,舉凡財經研究,
DSP 開發,都需要 MATLAB,學術上用途很廣,現在展示如何設計 跑馬燈 。
  1. function dotmatrix
  2. % 跑馬燈
  3. % 圖形窗口,座標軸準備
  4. hfig=figure('position',[300   355   477   325],'color','k','name','dotmatrix','menubar','none');  % figure背景顏色
  5. axis off ;axis equal
  6. [X Y]=meshgrid(linspace(1,16,128));
  7. h=zeros(size(X));        % 存放所有「點」的 token
  8. str='熱烈歡迎 您 大駕光臨 SOGO 論壇 電子電機暨資訊工程館!';   %%%%【將此處修改成你要顯示的文字】
  9. DATA=[];
  10. for i=1:length(str)      % 調用字模提取函數文件,生成點陣數據
  11.     temp=getwordmatrix(str(i));
  12.     DATA=[DATA flipud(temp)];
  13. end
  14. DATA=[zeros(16,60) DATA zeros(16,60)];        %% 微調顯示效果,讓文字從右出現
  15. for i=1:16               % 創建點陣
  16.     for j=1:64
  17.         h(i,j)=line(X(i,j),Y(i,j),'marker','s','markersize',3,'markerfacecolor','none');
  18.             set(h(i,j),'buttondownfcn','buttondown','markeredgecolor','none');
  19.     end
  20. end

  21. % while ishandle(hfig)   % 循環改變點陣
  22. %    Z=DATA(:,1:64);
  23. %     for i=1:16
  24. %     for j=1:64
  25. %         if Z(i,j)==1
  26. %         set(h(i,j),'markerfacecolor','g');
  27. %         else         
  28. %         set(h(i,j),'markerfacecolor','none');
  29. %         end
  30. %     end
  31. %     end
  32. %  pause(1/24);
  33. %  DATA=DATA(:,[2:end 1]);
  34. %  end
  35. %% 循環顯示

  36. numFrames=0;
  37. while numFrames<(size(DATA,2)-64)/2
  38. % while ishandle(hfig)   % 循環改變點陣
  39.    Z=DATA(:,1:64);
  40.     for i=1:16
  41.     for j=1:64
  42.         if Z(i,j)==1
  43.         set(h(i,j),'markerfacecolor','g');  %%%% 更改文字顏色。'g'為綠色
  44.         else         
  45.         set(h(i,j),'markerfacecolor','none');
  46.         end
  47.     end
  48.     end
  49.     pause(.02);
  50.     DATA=DATA(:,[3:end 1:2]);
  51.     numFrames=numFrames+1;  
  52.     frames(numFrames)=getframe;
  53. end

  54. %% 寫文件
  55. animated(1,1,1,numFrames) = 0;
  56. for k=1:numFrames
  57.    if k == 1
  58.       [ animated cmap] = rgb2ind(frames(k).cdata, 256, 'nodither');
  59.    else
  60.       animated(:,:,1,k) =rgb2ind(frames(k).cdata, cmap, 'nodither');
  61.    end     
  62. end

  63. filename = 'welcome.gif';
  64. imwrite(animated, cmap, filename, 'DelayTime', .2, 'LoopCount', inf);
  65. web(filename)

  66. end

  67. %% 下面這個回調函數可以無視掉~~
  68. function buttondown      % 按下回調函數
  69. set(gcbo,'markerfacecolor',rand(1,3));
  70. end
複製代碼

已有 1 人評分威望 收起 理由
紅塵孤鳥 + 2 您發表的文章內容豐富,無私分享造福眾人,.

總評分: 威望 + 2   查看全部評分

喜歡嗎?分享這篇文章給親朋好友︰
               感謝作者     

請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2024-12-22 23:49

© 2004-2024 SOGO論壇 OURSOGO.COM
回頂部