我有一个非常简单的脚本,它会绘制一些随机的东西,并为textbox
添加背景颜色。我试图改变背景的透明度,以便情节显示出来。
我有以下代码:
x = rand(10);
plot(sin(x))
a = annotation('textbox', [0.5 0.5 0.1 0.1], 'String', 'Some Random Text');
set(a, 'BackgroundColor', [.7 .9 .7]);
set(a, 'FaceAlpha', 0.5);
它会产生如下图像:
显然,透明度有效,因为部分背景颜色是透明的。
为什么所有这些都不透明?我在这里做错了吗?
答案 0 :(得分:1)
更新:Mathworks确认它可能是一个可能在2014b中修复的错误(将于2014年7月发布)。临时解决方法是:
plot(sin(rand(10)))
a = annotation('textbox', [0.5 0.5 0.1 0.1], 'String', 'Some Random Text');
b = annotation('textbox', get(a,'Position'));
set(b, 'BackgroundColor', [0 0.5 0]);
set(b, 'FaceAlpha', 1);
uistack(a,'top')
文本的一个注释,另一个注释背景颜色。
实际上它可能是一个Matlab错误。有关annotations的文档说:
FaceAlpha
范围内的标量alpha值[0 1]对象背景的透明度。 定义对象背景颜色的程度 透明。值为1(默认值)使背景不透明,a 值为0使背景完全透明(即, 无形)。默认值为1.
我会得出结论,整个背景应该受到影响,但我可以确认在这里情况并非如此(Matlab 2012b)。我可能会向他们提交错误报告。
对于临时修复,将backgroundcolor设置为尽可能明亮(例如[0.9,0.9,0.9]),然后一个人不会立即看到效果。