上面解释了图形对象的层次结构体。详见图形结构体导论这里描述了特定的对象,并讨论了这些对象中包含的属性。请记住,图形对象总是从句柄.
层次结构体的顶层和所有地物对象的父对象。使用groot
以获得根图形对象的句柄。
一个数字窗口。
一组轴。此对象是图形对象的子对象,可以是线、文本、图像、补丁、曲面或灯光对象的任意一个。
二维或三维的线。
文本注释。
位图图像。
填充多边形,目前仅限于二维。
三维曲面。
用于补丁和曲面上的照明效果的灯光对象。
您可以通过调用与对象同名的函数来创建任何图形对象基元;换句话说,图形
, axes
,线
, 文本
, 形象
, 色斑
, 表面
和光
函数。这些基本图形对象自动成为当前轴对象的机器,就好像等等
已经到位。另外,轴将自动成为当前图形对象的子对象,图形将成为根对象的子节点。
如果不需要此自动加入函数,则重要的是要调用newplot
首先准备一个新的图形和轴进行绘制。或者,更简单的方法是调用高级图形子程序,该子程序将创建绘图,然后用低级图形对象填充绘图。而不是调用线
使用plot
。或者使用冲浪
而不是表面
。或者使用填满
或fill3
而不是色斑
.
()
¶(property, value, …)
¶(hpar, property, value, …)
¶(hax)
¶h =
axes (…)
¶创建一个笛卡尔轴对象并返回其控制柄,或者将当前轴设置为hax.
在没有任何参数的情况下调用,或使用属性/value对,构建一个新的轴。可选参数hpar是为新轴指定父轴的图形句柄,可以是图形、uipanel或itab。
使用单轴句柄参数调用hax,函数使hax当前轴(从返回gca
). 它还制作了包含hax当前数字(从返回gcf
). 最后,它重新装载父对象的儿童
属性,以便轴hax显示在列表中所有其他轴句柄之前。这导致hax以显示在任何其他轴对象的顶部(Z顺序堆叠)。此外,它还重新设置与关联的任何图例或颜色对象hax从而它们也是可见的。
编程说明:属性的完整列表记录在轴属性.
()
¶(x, y)
¶(x, y, z)
¶("xdata", x, "ydata", y)
¶("xdata", x, "ydata", y, "zdata", z)
¶(…, property, value)
¶(hax, …)
¶h =
line (…)
¶从创建线对象x和y(而且可能z)并将其插入当前轴中。
在标准调用形式中,数据x, y和z可以是标量、向量或矩阵。在矩阵输入的情况下,线
将尝试定向标量和向量,以便绘制结果。这需要向量的一个维度与矩阵的行数或列数相匹配。
在按名称指定数据的低级调用形式(性能提高50%)中(行(“xdata”,x, …)
)数据必须是伪造的。如果未指定数据(线
然后x== y= [0, 1]
.
可以为行对象指定多个属性值对,但它们必须成对出现。
如果仅使用调用属性/value对,则任何未指定的属性都使用根对象上指定的默认值。
如果第一个参数hax是一个轴句柄,然后绘制到此轴,而不是返回的当前轴gca
.
可选返回值h是创建的线对象的图形句柄(或句柄向量)。
编程说明:属性的完整列表记录在线属性.
函数线
不同于plot
在该行中,对象插入到当前轴,而无需首先清除绘图。
()
¶(x, y, c)
¶(x, y, z, c)
¶("Faces", faces, "Vertices", verts, …)
¶(…, "prop", val, …)
¶(…, propstruct, …)
¶(hax, …)
¶h =
patch (…)
¶在当前轴中创建具有顶点的补丁对象(x, y)和彩色c.
如果顶点是大小为MxN的矩阵,则每个多边形patchhas M个顶点,并且将创建总共N个多边形。如果某些多边形没有M个顶点,则使用NaN表示“无顶点”。如果z输入存在,则将创建3D补丁。
颜色参数c可以采取多种形式。为了创建所有共享单一颜色的多边形,使用字符串值(例如。,r
forred),一个标量值,按caxis
并索引到当前颜色图或具有精确TrueColor的3元素RGB向量中。
如果c是长度为N的向量,则第i个多边形将具有通过缩放条目确定的颜色c(i) 根据caxis
并将其分解为当前颜色图。更复杂的着色情况需要直接操作补丁属性/值对。
不是通过矩阵指定多边形x和y,可以呈现一个唯一的顶点列表,然后呈现从这些顶点创建的多边形面列表。在这种情况下顶点
矩阵将是Nx2(2-D补丁)或Nx3(3-D补丁)。MxN面孔
matrix描述了具有N个顶点的M个多边形——每行描述一个多边形,每列条目都是顶点
矩阵来识别顶点。可以通过直接传递属性/值对来创建补丁对象顶点
/verts, 面孔
/面孔愚蠢。
任何属性都可以通过传递aststructure来设置,而不是使用属性/值对propstruct具有相应的字段名称。
如果第一个参数hax是一个轴句柄,然后绘制到此轴,而不是返回的当前轴gca
.
可选返回值h是创建的补丁对象的图形句柄。
编程说明:
cdata
, 边缘颜色
,面部颜色
, 面孔
, 顶点
和facevertexcdata
.
xdata
, ydata
,zdata
, 面孔
, 顶点
)应在其他属性之前指定,以避免意外的绘图输出或错误。cdata
具有面顶点定义的几何体的颜色定义或facecentercdata
具有x-y-z定义的几何体的颜色定义。(x, y, z, c)
¶(x, y, z)
¶(z, c)
¶(z)
¶(…, prop, val, …)
¶(hax, …)
¶h =
surface (…)
¶在给定矩阵的情况下创建曲面图形对象x和y从…起网格
和一个值矩阵z对应于x和y曲面的坐标。
如果x和y是向量,则典型的顶点是(xjy(i) ,z(i,j))。因此,的列z对应不同x的值和行z对应不同y价值观如果只有单个输入z则给出x是的1:列(z)
和y是1:行(z)
.
任何属性/值输入对都将指定给曲面对象。
如果第一个参数hax是一个轴句柄,然后绘制到此轴,而不是返回的当前轴gca
.
可选返回值h是createdsurface对象的图形句柄。
编程说明:属性的完整列表记录在表面属性.
()
¶(…, "prop", val, …)
¶(hax, …)
¶h =
light (…)
¶在当前轴或为轴创建灯光对象hax.
当灯光对象存在于轴对象中时,以及属性EdgeLighting
或FaceLighting
的色斑
或表面
对象的值设置为没有一个
,这些对象是用灯光效果绘制的。Lightingproperties支持的值为没有一个
(没有照明效果),平的
(物体的外观),以及gourud
(顶点之间照明效果的线性插值)。如果照明模式设置为平的
这个FaceNormals
属性用于照明。对于gourud
这个顶点法线
属性。
每个轴最多支持八个灯光对象。(取决于实施)
照明仅支持OpenGL图形工具包(即。,fltk
和qt
).
灯光对象具有以下属性,这些属性会更改绘图的外观。
颜色
光的颜色可以作为RGB向量(例如。,[1 0 0]
对于红色)或作为字符串(例如。,r
红色)。默认颜色为白色([1 1 1]
).
位置
光作为1x3向量。默认方向为[1 0 1]
.
风格
此字符串定义光是否从无限远处的光源(极大的
)或来自本地点源(地方的
). 默认为极大的
.
如果第一个参数hax是一个轴控制柄,然后将灯光对象添加到此轴,而不是从返回的当前轴gca
.
可选返回值h是创建的灯光对象的图形句柄。
编程说明:属性的完整列表记录在灯光源属性.
要确定变量是图形对象索引,还是轴或图形的索引,请使用以下函数伊什甘德尔
, isgraphics
,isax
和isfigure
.
tf =
ishghandle (h)
¶如果返回trueh是图形句柄,否则为false。
h也可以是句柄的矩阵,在这种情况下,返回的逻辑数组为true,其中的元素为h是图形句柄,不是的地方是false。
详见: isgraphics, isax, isfigure, ishandle.
tf =
isgraphics (h)
¶tf =
isgraphics (h, type)
¶如果返回trueh是图形句柄(类型为type)和虚假的。
当否type指定的函数等效于伊什甘德尔
.
tf =
ishandle (h)
¶如果返回trueh是图形或Java对象的句柄,否则为false。
h也可以是句柄的矩阵,在这种情况下,返回的逻辑数组为true,其中的元素为h是图形或Java对象的句柄,如果不是,则为false。
编程注意事项:测试特定的对象类型通常更有用。要确定控制柄是否属于图形对象,请使用伊什甘德尔
或isgraphics
。要确定句柄是否属于Java对象,请使用isjava
.
详见: 伊什甘德尔, isgraphics, isjava.
tf =
isaxes (h)
¶如果返回trueh是轴图形句柄,否则为false。
如果h是一个矩阵,然后返回一个逻辑数组,该数组为true,其中的元素为h是轴图形句柄,不在的地方为false。
详见: isfigure, 伊什甘德尔, isgraphics.
tf =
isfigure (h)
¶如果返回trueh是图形句柄,否则为false。
如果h是一个矩阵,然后返回一个逻辑数组,该数组为true,其中的元素为h是图形句柄,在没有句柄的地方为false。
详见: isax, 伊什甘德尔, isgraphics.
函数gcf
返回当前地物对象的索引,如果不存在则创建索引。类似地,gca
返回当前轴对象,或创建一个(及其父地物对象)(如果不存在)。
h =
groot ()
¶将控制柄返回到根图形对象。
根图形对象是所有图形对象的最终父对象。
此外,根对象还包含有关图形系统整体的信息,例如屏幕size
使用得到(groot)
以了解可用的信息。
图形系统作为一个整体的默认值从根图形对象的设置属性指定,以开头默认
。例如,要将所有文本对象的默认字体设置为FreeSans,请使用
set(groot,“DefaultTextFontName”,“FreeSans”)
可以使用删除默认属性set
具有的specialproperty值去除
。要撤消上面的默认字体赋值,请使用
set(groot,“DefaultTextFontName”,“remove”)
编程说明:根图形对象从specialhandle值0标识。在某个时刻,这个唯一的值可能会发生变化,但代码可以通过使用groot
保证始终返回根图形对象。
h =
gcf ()
¶将句柄返回到当前图形。
当前图形是图形输出的默认目标。如果存在多个数字,gcf
返回最后一个创建的图形或用鼠标单击的最后一个图形。
如果当前地物不存在,请创建一个地物并返回其句柄。然后可以使用句柄来检查或设置图形的属性。例如,
fplot(@sin,[-10,10]);图=gcf();set(图,“numbertitle”,“off”,“name”,“sin-plot”)
绘制一个正弦波,找到当前图形的句柄,然后重命名图形窗口以描述内容。
注意:如果当前地物不存在,则要查找当前地物而不创建新地物,请查询CurrentFigure
根图形对象的属性。
get(groot,“currentfigure”);
h =
gca ()
¶将控制柄返回到当前轴对象。
当前轴是图形输出的默认目标。在具有多个轴的图形的情况下,gca
返回最后创建的轴或用鼠标单击的最后一个轴。
如果不存在当前轴对象,请创建一个并返回其控制柄。然后可以使用句柄来检查或设置轴的属性。例如,
ax=gca();set(ax,“位置”,[0.5,0.5,0.5,0.5]);
创建一个空轴对象,然后在图形窗口中更改其位置和大小。
注意:若要查找当前轴而不创建新的轴对象(如果该对象不存在),请查询CurrentAxes
图形的属性。
get(gcf,“currentaxes”);
h =
gco ()
¶h =
gco (hfig)
¶将句柄返回到当前地物的当前对象,或将句柄返回至具有句柄的地物的当前目标hfig.
图形的当前对象是上次单击的对象。它存储在CurrentObject
属性。
如果上次鼠标单击没有发生在地物的任何子对象上,则当前对象就是地物本身。
如果目标图形中没有发生鼠标单击,此函数将返回一个空矩阵。
编程注意事项:此函数返回的值不一定与返回的值相同gcbo
在回调执行期间。执行回调可能会被另一个回调中断,并且当前对象可能会更改。
这个get
和set
函数可以用于检查和设置图形对象的属性。例如
得到(groot)⇒ ans={type=root currentfigure=[](0x0)children=[](x0)visible=on…}
返回一个包含根图形对象所有属性的结构体。与Octave中的所有函数一样,结构体是按值返回的,因此修改它不会修改内部根对象。要做到这一点,您必须使用set
作用此外,请注意,在这种情况下当前数字
属性为空,表示没有当前图形窗口。
这个get
函数也可以用于查找单个属性的值。例如
get(gca(),“xlim”)⇒ [ 0 1 ]
返回当前图形中当前轴对象的x轴范围。
要设置图形对象属性,请使用set函数。例如
集合(gca(),“xlim”,[-10,10]);
将当前图形中当前轴对象的x轴范围设置为[-10, 10]’.
如果set
函数在没有值参数的情况下被调用。当只给定一个参数(图形)时,将返回一个具有给定对象类型的所有属性的默认值的结构体。例如
集合(gca())
返回一个结构体,该结构体包含轴对象的默认属性值。如果set
使用两个参数(一个图形句柄和一个propertyname)调用,则只返回所指定属性的默认值。
val =
get (h)
¶val =
get (h, p)
¶返回命名属性的值</p>从图形句柄h.
如果</p>如果忽略,则返回的完整属性列表h.
如果h是一个向量,返回一个分别包含属性值orlist的元胞数组。
详见: set.
(h, property, value, …)
¶(h, {properties}, {values})
¶(h, pv)
¶value_list =
set (h, property)
¶all_value_list =
set (h)
¶为图形句柄(或图形句柄的向量)设置命名属性值h.
提供属性名称和值的方法有三种:
每个属性是一个包含属性名称的字符串,每个value是属性的适当类型的值。当中有多个句柄时h,每个都赋值了相同的value例如
h=绘图([0,1]);set(h,'color','green');
在这种情况下,的列数value必须与中的元素数量相匹配属性。的第一列value中第一个条目的containsvalues属性,等等的行数value必须为1或与的元素数匹配h。在第一种情况下,中的每个句柄h将被赋值相同的值。在第二种情况下,中的第一个句柄h将被赋值的第一行中的值value等等。例如:
h=绘图([0,1;1,0]);集合(h,{‘color’},{’green’;‘red’});
这与第一种情况相同,其中的字段名pv表示属性名称,字段值提供属性值。与第一种情况一样,只能为一个属性设置一个值,该值将应用于中的所有句柄h例如
h=绘图([0,1]);props.color='绿色';布景(h,道具);
用于设置属性的三种语法可以任意组合出现。
set
还用于查询命名属性将采用的值列表。clist设置h属性
将返回的可能值列表属性
在数组列表中clist。如果没有使用输出变量,则会格式化列表并将其打印到屏幕上。
如果未指定属性(slist设置h)
)然后是aststructureslist返回,其中字段名是对象的属性h字段是每个属性的可能值的列表。如果没有使用输出变量,则会格式化列表并将其打印到屏幕上。
查询属性时,仅使用单个图形句柄h对于单个图形对象是允许的。
示例查询
hf=数字();设置(hf,“纸张方向”)⇒ [横向|{纵向}]
显示了paperorientation属性可以采用两个值,defaultbeing肖像
.
详见: get.
parent =
ancestor (h, type)
¶parent =
ancestor (h, type, "toplevel")
¶返回句柄对象的第一个祖先h其类型匹配type这里的type是一个字符串。
如果type是字符串的元胞数组,返回etype与任何给定类型字符串匹配的第一个父字符串。
如果句柄对象h本身就是类型typereturnh.
如果顶层
作为第三个参数给出,返回对象层次结构体中与条件匹配的最高父级,而不是第一个(最近的)父级。
h =
allchild (handles)
¶查找图形对象的所有子对象,包括隐藏的子对象。
此函数类似于get(h,“儿童”)
,但也返回隐藏的对象(HandleVisibility=关
).
如果句柄是标量,h将是一个向量。否则h将是与相同大小的数组矩阵句柄每个数组将包含一个句柄向量。
图形可以用多种图形格式打印或保存打印
和另存为
。但是,有时直接保存原始Octave句柄图形可能会很有用,以便进行进一步的修改,例如修改标题或图例。
这可以通过以下函数实现:
fig_struct=hdl2struct(gcf);保存myplot.fig-struct fig_struct;。。。fig_struct=加载(“myplot.fig”);struct2hdl(图struct);
s =
hdl2struct (h)
¶返回一个结构体,s,其字段描述与句柄相关联的对象及其子对象的属性,h.
结构体的字段s是类型
, 句柄
,属性
, 儿童
和特殊的
.
h =
struct2hdl (s)
¶h =
struct2hdl (s, p)
¶h =
struct2hdl (s, p, hilev)
¶构造图形句柄对象h从结构体s.
结构体必须包含字段句柄
, 类型
,儿童
, 属性
和特殊的
.
如果指定了现有图形或轴的句柄,</p>,新对象将被创建为该对象的子对象。如果没有提供父句柄,则将使用根对象的默认值构造新图形和必要的子对象。
第三个布尔参数希列夫可以传递以指定函数是否应保留监听器/回调,例如图例或hggroup。默认值为false。
hnew =
copyobj (horig)
¶hnew =
copyobj (horig, hparent)
¶构造与控制柄关联的图形对象的副本horig并返回新句柄hnew到新对象。
如果父句柄hparent(根、图形、轴或hggroup),则复制的对象将创建为的子对象hparent.
如果horig是句柄的向量,并且hparent是标量,则向量中的每个句柄hnew有它的父级对象亲
属性设置为hparent相反,如果horig是标量,并且hparent一个向量,则每个父对象将接收的副本horig如果horig和hparent都是元素数量相同的向量,那么hnew(i)
将有父级hparent(i)
.
版权所有 © 2024 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号