作者WRO (效应)
看板MATLAB
标题[绘图] 储存的图档如何保持透明度?
时间Tue Mar 20 19:32:30 2012
大家晚安,
一个简单却难找的问题打扰一下
我目前的需求是要在画出的图形中叠上一块半透明的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
1F:推 olliekr:F = getframe(gcf); % 先抓figure 03/20 20:00
2F:→ olliekr:imwrite(F.cdata,'qq.bmp'); % 输出为qq.bmp 03/20 20:00
3F:推 diva:我用patch画再存的图有显示透明度耶 03/20 20:02
4F:→ diva:啊 fill也可以 奇怪 我没有你的问题耶 03/20 20:04
5F:推 diva:会不会是plot画出来的东西不能给透明度? 03/20 20:06
6F:→ diva:A=fill([1 -0.5 -0.5 1],[0 .866 -.866 0]+0.75,'r'); 03/20 20:06
7F:→ diva:set(A,'EdgeColor','none');set(A,'facealpha',.1); 03/20 20:06
8F:→ diva:B=fill([0 0 1 1],[0.5 1 1 0.5],'b'); 03/20 20:06
9F:→ diva:set(B,'EdgeColor','none');set(B,'facealpha',.1); 03/20 20:06
10F:→ diva:saveas(gcf,'test.emf') 03/20 20:06
11F:→ diva:存出来的图有透明度 03/20 20:07
13F:→ WRO:oll大的方法可以保存透明度,但我还在想为什麽会抓不到图轴^^ 03/20 20:38
14F:→ WRO:至於问题可能真的像diva大说的,我重复了d大的作法真的可以保 03/20 20:38
15F:→ WRO:存透明度,但是plot就不行 T___T||||| 03/20 20:39
16F:→ WRO:再次痛哭流涕感谢两位....... <(__ __)> 03/20 20:41