我正在尝试数字化图像中的点,我想使用 KeyDown 事件来清除选定的点。要使 KeyDown 正常工作,必须通过单击图像来选择图像(图像周围显示橙色边框)。分配鼠标单击后,它将在我的图像中注册该点,但不会选择该图像,因此 KeyDown 将不起作用。我已经发现我可以使用鼠标右键选择图像。我希望找到一种方法,让代码在创建文档后立即自动为我选择图像。有人知道如何做到这一点吗?
这是我的研究,以便我可以数字化超声图像中特征的位置。
我尝试以几种不同的方式使用 SelectionMove[] 函数,但它不起作用。
CreateDocument[
DynamicModule[
{pnts = {}},
EventHandler[
Show[
img,
Epilog -> {Red, Point[Dynamic[pnts]]}
],
{
{"MouseClicked",
1} :> {AppendTo[pnts, MousePosition["Graphics"]]},
"EscapeKeyDown" :> {pnts = {}}
}
]
]
];
它打开图像,我可以放置点。但是,我无法使用EscapeKeyDown清除它们。
我的图片 -> https://i.stack.imgur.com/bKKqC.jpg
看起来这个问题在文档中得到了模糊的答案:"对于鼠标事件,EventHandler[expr,...]处理鼠标位于 expr 显示定义的矩形区域内的事件。 暗示键盘事件的工作方式不同。
你可以使用这样的东西。
pnts = {};
SetOptions[CreateDocument[
EventHandler[Show[img, Epilog -> {Red, Point[Dynamic[pnts]]}],
{"MouseClicked", 1} :> AppendTo[pnts, MousePosition["Graphics"]]]],
NotebookEventActions :> {"EscapeKeyDown" :> (pnts = {})}]