Main Content

更改图像、填充或曲面的透明度

此示例说明如何修改图像、填充或曲面的透明度。

坐标区框中所有对象的透明度

透明度值称为 alpha 值。使用 alpha 函数设置当前坐标区范围内所有图像、填充或曲面对象的透明度。指定一个介于 0(完全透明)和 1(完全不透明)之间的透明度值。

t = 0:0.1:2*pi;
x = sin(t);
y = cos(t);

figure
patch(x,y,'r')
patch(x+0.8,y,'g')
patch(x+0.4,y+0.8,'b')
axis square tight 
alpha(0.3)

Figure contains an axes object. The axes object contains 3 objects of type patch.

个别曲面的透明度

曲面的透明度由其 AlphaData 属性定义。将 alpha 数据设置为用于指定曲面的每个顶点透明度的标量值或值矩阵。FaceAlpha 属性指示如何从顶点透明度确定曲面透明度。

[X,Y,Z] = peaks(20);
s2 = surf(X,Y,Z);

s2.AlphaData = gradient(Z);    
s2.FaceAlpha = 'flat';

Figure contains an axes object. The axes object contains an object of type surface.

个别图像的透明度

与曲面一样,图像的透明度也由其 AlphaData 属性定义。对于图像,将 alpha 数据设置为用于指定图像数据的每个元素透明度的标量值或值矩阵。

例如,使用透明度覆盖两个图像。首先,显示地球的图像。

earth = imread('landOcean.jpg');
image(earth)    
axis image

Figure contains an axes object. The axes object contains an object of type image.

然后,使用透明度将云图层添加到地球图像。

clouds = imread('cloudCombined.jpg');
image(earth)
axis image
hold on

im = image(clouds);
im.AlphaData = max(clouds,[],3);    
hold off

Figure contains an axes object. The axes object contains 2 objects of type image.

个别填充的透明度

填充的透明度由其 FaceAlphaFaceVertexAlphaData 属性定义。若要在整个填充上实现单一的透明度,请将 FaceVertexAlphaData 设置为一个介于 0(完全透明)和 1(完全不透明)之间的常量,并将 FaceAlpha 属性设置为 'flat'

cla
p1 = patch(x,y,'r');
axis square tight
p1.FaceVertexAlphaData = 0.2;
p1.FaceAlpha = 'flat' ; 

Figure contains an axes object. The axes object contains an object of type patch.

若要在整个填充上实现可变的透明度,请将 FaceVertexAlphaData 设置为用于指定填充的每个顶点或每个面的透明度的值矩阵。然后,通过 FaceAlpha 属性指示如何使用 FaceVertexAlphaData 确定面的透明度。如果为顶点指定了 alpha 数据,则必须将 FaceAlpha 设置为 'interp'

p1.FaceVertexAlphaData = x';
p1.FaceAlpha = 'interp';

Figure contains an axes object. The axes object contains an object of type patch.

包含纹理映射的透明度

纹理映射将二维图像映射到三维曲面上。通过将 CData 属性设置为图像数据并将 FaceColor 属性设置为 'texturemap',可将图像映射到曲面上。

此示例创建地球和云的三维视图。它创建球形表面,并使用纹理映射将地球和云的图像映射到曲面上。

[px,py,pz] = sphere(50);

sEarth = surface(py, px ,flip(pz));
sEarth.FaceColor = 'texturemap';
sEarth.EdgeColor = 'none';
sEarth.CData = earth;
hold on
sCloud = surface(px*1.02,py*1.02,flip(pz)*1.02); 

sCloud.FaceColor = 'texturemap'; 
sCloud.EdgeColor = 'none';
sCloud.CData = clouds;

sCloud.FaceAlpha = 'texturemap';
sCloud.AlphaData = max(clouds,[],3);
hold off
view([80 2]) 
daspect([1 1 1])
axis off tight

此示例中使用的图像来自 Visible Earth。

致谢:美国国家航空航天局戈达德太空飞行中心图像,由 Reto Stöckli 拍摄(陆地表面、浅水、云)。Robert Simmon 提供增强效果(海洋颜色、合成、三维地球仪、动画)。数据和技术支持:MODIS 土地组;MODIS 科学数据支持团队;MODIS 大气组;MODIS 海洋组附加数据:美国地质调查局 EROS 数据中心(地貌);美国地质勘探局地球遥感弗拉格斯塔夫球场中心(南极洲);美国国防气象卫星计划(城市灯光)。

另请参阅

| |