1

我一直在到处寻找,但找不到显示如何执行此操作的站点。我想要的是当我单击它时能够从轴中选择一个对象,这样我就可以改变它的颜色和东西。

我只是不知道如何选择一个孩子,我可以创建对象但不能选择它们。

我有这段代码用来创建一行:

coord = ginput (2)
x = coord(:,1)
y = coord(:,2)
hline = line(x,y)

我不确定是否需要在数组中创建对象以便我可以选择编辑/删除它们。我相信我需要使用 ButtonDownFcn,但可能我做错了什么。

任何帮助将不胜感激,如果我缺少任何信息,请告诉我

谢谢

4

1 回答 1

2

没有必要使用ginput和提取坐标。这是由图形窗口中的内置“侦听器”自动完成的。假设您可以ButtonDownFcn在对象(线、线系列或其他句柄图形对象)上使用该属性是正确的。

尝试从 (0,0) 到 (1,1) 的简单行创建:

hline = line([0,1],[0,1]) %# create line, save handle in hline

然后,您可以将其设置ButtonDownFcn为,例如,匿名函数的函数句柄:

set( ...
   hline, ...
   'ButtonDownFcn', @(handle,event)(disp(['You clicked on the line!'])) ...
);

现在尝试单击该行。它应该在命令窗口中打印文本。

该函数需要能够接收至少两个参数:(1)对象本身的句柄(行)和(2)“事件结构”。我相信当您使用线对象时,第二个参数只是空的。但是您的函数仍然需要至少接收这两个参数(即使您不使用它们)。

在此处阅读更多信息:http: //www.mathworks.com/help/techdoc/ref/line_props.html

您还可以使用自己的函数(文件中的命名函数):

set( ...
   hline, ...
   'ButtonDownFcn', @(handle,event)(namedFunction(handle,event)) ...
);

...或者,如果您(预期)在这两个参数之外还有其他参数,则可以使用 struct-array。

于 2011-02-17T14:33:11.370 回答