因为作图需要,我要用matlab写出带描边的字。之前发微博求助,兔子给了个思路——往上下左右各平移一点(例如一像素)铺底色、再在中心写正文,一个路过的高手转发了别人写的一个函数,名叫textborder,思路跟兔子给的是一样的。我下载这代码之后,测试了一下,很漂亮。然后我拿来画自己的图,却不知为什么只有加粗的border_color的本应垫底的字(下文称border),却没有text_color的主体(下文称text)。
然后苦苦测试了两小时,大概试了三十种改法。最后得出的结论是——matlab有bug。(前提可能是像我这种被缩放过的图,即以像素为单位和以数据为单位的坐标轴刻度比不一致,)只要把句柄中position的units属性改成像素,铺完border后再铺text的话,text就显示不出来了。即先写的border在最顶层,后面写的text反而在底层。而units的单位是默认的data的时候,则没有这个问题,即后写的text覆盖在之前写的border之上,但是data的比例和像素比例不一致时画出来是变形的,不好看。除此之外units还有别的选项,没心情去一一测试了。
最后终于发现了解决方法:铺完border后,再铺text,这时text是不显示的。但是这时用句柄把text的position移一下,它就神奇地出现了!所以,只要先把text往任意地方移一下,再移回原位,就解决了。
不过没什么解决了问题的愉快感,只是郁闷这个坑爹的bug害我浪费了两个多小时,并且导致我之前卡壳。