Вы сказали:
Я хочу вызвать «сохранить рисунок как», щелкнув правой кнопкой мыши на графике LocatorPane.
Я еще не нашел способ сделать это, но вы можете не знать, что можете:
выберите объект LocatorPane
, щелкнув пробел справа от него и перетащив влево.
используйте меню File > Save Selection As...
, чтобы сохранить изображение в нужном формате.
То, что я считаю правильным вариантом, похоже, не работает:
SetOptions[EvaluationNotebook[],
ComponentwiseContextMenu -> {"GraphicsBox" ->
FEPrivate`FrontEndResource["ContextMenus", "GraphicsBox"],
"Graphics3DBox" ->
FEPrivate`FrontEndResource["ContextMenus", "Graphics3DBox"],
"LocatorPaneBox" ->
FEPrivate`FrontEndResource["ContextMenus", "GraphicsBox"],
"CellGroup" ->
FEPrivate`FrontEndResource["ContextMenus", "CellGroup"],
"CellBracket" ->
FEPrivate`FrontEndResource["ContextMenus", "CellBracket"],
"CellRange" ->
FEPrivate`FrontEndResource["ContextMenus", "CellRange"],
"CellInsertionPoint" ->
FEPrivate`FrontEndResource["ContextMenus", "CellInsertionPoint"]}
];
В частности, значение для "LocatorPaneBox" ->
было изменено на "GraphicsBox"
, но оно не имеет видимого эффекта.
С другой стороны, изменение значения "GraphicsBox" ->
оказывает влияние.
Я подозреваю, что, поскольку LocatorPane
использует ввод мыши, он фиксирует попытку щелчка правой кнопкой мыши и никогда не передает его в механизм контекстного меню. Возможно, отключение мыши в качестве устройства ввода для LocatorPane
исправит это, но это не кажется практичным.
Вот один из способов реализовать ваше предложение об использовании "SelectionSaveSpecial"
:
Dynamic[EventHandler[
LocatorPane[{1, 1}/2, Graphics[{Gray, Disk[]}]],
{"MouseClicked", 2} :>
FrontEndExecute[
SelectionMove[EvaluationNotebook[], All, GeneratedCell];
SelectionMove[EvaluationNotebook[], All, CellContents];
FrontEndToken["SelectionSaveSpecial"]
]
]]