|
默认和factory属性 当一个对象被创建时,MATLAB就会把默认的属性值赋值于每一个对象。如果这些属性值不是你想要的,那么你必须用set函数选择你想要的值。 如果你想更改你创建的每一个对象的一个属性,这个过程将变得非常麻烦。由于这个原因,MATLAB允许你修改默认值本身,所以当他们被创建时,所有的对象都会继承所有正确的属性值。 当一个图形对象被创建时,MATLAB就会通过检测对象的父对象来寻找每一个属性的默认值。如果父对象设置了默认值,那么这个值就会被应用。如果没有设置默认值,那么MATLAB就会检测父对象的父对象,看是否有默认值。以此类推,直到根对象。在这个过程中,MATLAB会应用第一次遇到的默认值。 默认属性可以在优先级高的图形对象中的任意一点设置。 例如,默认的图的颜色在根对象中设置,而在这之后的所有图象都有一个新的默认颜色。从另一方面说,默认的坐标轴颜色可以在根对象或图象对象设置。如果坐标的默认颜色在根目录中设置,那么它将应用于所有图象的所有新坐标轴,如果默认的坐标轴颜色在图象对象中设置,它将在当前图象窗中的新坐标轴。 默认值的设置要用一个字符串,这个字符串由"Default",对象类型和属性名组成。所以默认图象颜色可以通过属性"DefaultFigureColor"来设置,默认的坐标轴颜色可以通过属性"DefaultAxesColor"设置。下面是设置默认值的一些例子 set(0, 'DefaultFigureColor', 'y') 黄色图象背景 set(0, 'DefaultAxesColor', 'r') 红色坐标系背景——所有图象中的坐标轴 set(gcf, 'DefaultAxesColor', 'r') 红色坐标系背景——当前图象坐标轴 set(gca, 'DefaultLineStyle', ':') 只在当前坐标系中设置默认线型为虚线 如果你要对已存在的对象的属性进行修改,那么在用完这个属性之后,最好恢复原来的条件。 如果你在一个函数中修改了一个对象的默认属性值,保存它原来的值,并在跳出这个函数之前恢复它们。 例如,假如我们用归一化单位创建一系列的图象,我们可以用下面的保存和修复原来的单位。 saveunits = get(0, 'DefaultFigureUnits'); set(0, 'DefaultFigureUnits', 'normalized'); ... <MATLAB statements> ... set(0, 'DefaultFigureUnits', saveunits); 如果你想要定制MATLAB,每一次都有不同的默认值,那么每次当MATLAB启动时你必须对根对象设置默认值。 最简单的方法是把默认值存入startup.m文件,每次MATLAB启动时都会自动执行。 例如,假设你经常使用A4纸,并在图象中经常加入网格线。那么你可以把下面的语句加入到startup.m文件中。 set(0, 'DefaultFigurePaperType', 'a4letter'); set(0, 'DefaultAxesXGrid', 'on'); set(0, 'DefaultAxesYGrid', 'on'); set(0, 'DefaultAxesZGrid', 'on'); 有三种特殊值字符串用于句柄图形:"remove","factory"和"default"。如果你已经为一个属性设置了默认值,那么"remove"值将会删除你所设置的默认值。 例如,假设你设置默认的图象颜色为黄色。 set(0, 'DefaultFigureColor', 'y'); 调用下面的函数将会取消当前的默认值并恢复先前的默认值。 set(0, 'DefaultFigureColor', 'remove'); 字符串"factory"允许临时跳过当前的默认值,并使用原来的MATLAB的默认值。 例如,尽管当前的默认颜色为黄色,下面的语句将会用factory创建下面的图象。 set(0, 'DefaultFigureColor', 'y'); figure('Color', 'factory'); 第三个特殊的属性值字符串是default,这个属性值迫使MATLAB搜索对象层次结构,直到查到所需属性的一个默认值。如果找到,它就使用该默认值。如果查到根对象,没有找到用户定义的默认值,MATLAB就使用factory默认值。 它的应用说明如下 % Set default values set(0, 'DefaultLineColor', 'k'); % root default = black set(gcf, 'DefaultLineColor', 'g'); % figure default = green % Create a line on thecurrent axes. This line is green. Hndl = plot(randn(1, 10)); set(Hndl, 'Color', 'default'); pause(2); % Now clear the figuredefault and set the line color to the new % default. The line is nowblack. set(gcf, 'DefaultLineColor', 'remove'); set(Hndl, 'Color', 'default');
|