看板 MATLAB 關於我們 聯絡資訊
大家晚安, 一個簡單卻難找的問題打擾一下 我目前的需求是要在畫出的圖形中疊上一塊半透明的mask matlab是可以畫出來沒有問題,但是存成圖檔之後半透明的效果都會消失 就像下圖所示 http://ppt.cc/CKqP 目前找到能保存半透明效果的兩個方法, 一個是手動 alt + PrtScr 但是繪出的圖形個數龐大,一張一張存會哭哭 另一個是在版上找到的,有人提供自動擷取全螢幕的語法串: robo = java.awt.Robot; t = java.awt.Toolkit.getDefaultToolkit(); rectangle = java.awt.Rectangle(t.getScreenSize()); image = robo.createScreenCapture(rectangle); filehandle = java.io.File('screencapture.jpg'); javax.imageio.ImageIO.write(image,'jpg',filehandle); imageview('screencapture.jpg'); 雖然看不懂,不過複製貼上後真的可以擷取畫面 缺點是一來顏色明顯有落差(對方很龜毛,很多無理的細節都很要求) 二來是擷取的是全螢幕,所以一樣要手動後製截圖 不論怎麼試都沒辦法保存透明度 上一位發問的版友,在2010年問的,爬文看來也是石沈大海 雖然不太樂觀阿,但還是上來碰碰運氣, 不曉得這一兩年間有沒有人已經解決這......應該算冷門的問題了 先謝過 最後附上繪出附圖的試驗用程式, 如果有哪位想熱心一試的版友的話也比較方便 clear all; X=-2:0.01:2; Y=3*X; figure(1); plot(X,Y,'g','LineWidth',10); hold on; B=fill([0 0 1 1],[0.5 1 1 0.5],'b'); set(B,'EdgeColor','none'); axis([-2,2,-2,2]); alpha(0.2); hold off; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.19.139
olliekr:F = getframe(gcf); % 先抓figure 03/20 20:00
olliekr:imwrite(F.cdata,'qq.bmp'); % 輸出為qq.bmp 03/20 20:00
diva:我用patch畫再存的圖有顯示透明度耶 03/20 20:02
diva:啊 fill也可以 奇怪 我沒有你的問題耶 03/20 20:04
diva:會不會是plot畫出來的東西不能給透明度? 03/20 20:06
diva:A=fill([1 -0.5 -0.5 1],[0 .866 -.866 0]+0.75,'r'); 03/20 20:06
diva:set(A,'EdgeColor','none');set(A,'facealpha',.1); 03/20 20:06
diva:B=fill([0 0 1 1],[0.5 1 1 0.5],'b'); 03/20 20:06
diva:set(B,'EdgeColor','none');set(B,'facealpha',.1); 03/20 20:06
diva:saveas(gcf,'test.emf') 03/20 20:06
diva:存出來的圖有透明度 03/20 20:07
diva:http://imgur.com/r3ogM 03/20 20:09
WRO:oll大的方法可以保存透明度,但我還在想為什麼會抓不到圖軸^^ 03/20 20:38
WRO:至於問題可能真的像diva大說的,我重複了d大的作法真的可以保 03/20 20:38
WRO:存透明度,但是plot就不行 T___T||||| 03/20 20:39
WRO:再次痛哭流涕感謝兩位....... <(__ __)> 03/20 20:41