4

Mathematica でグラフィックを右クリックするとコンテキスト メニューが表示されますが (グラフィックの切り取り、グラフィックのコピー、グラフィックの名前を付けて保存...)、LocatorPane グラフィックの場合、この右クリック メニューは無効になります。Mathematica でEventHandlerまたはMouseActionコマンドを使用してLocatorPaneグラフィックスのコンテキストメニューを呼び出すにはどうすればよいですか? このメニューを作成するコマンドは?

LocatorPane[{1, 1}/2, Graphics[{Gray, Disk[]}]]

mathematica で「名前を付けて保存」ウィンドウを開くこのコードを見つけました。

FrontEndExecute[FrontEndToken["SelectionSaveSpecial"]]

LocatorPane グラフィックを右クリックすると、[名前を付けて保存] ウィンドウが開きます。

4

2 に答える 2

4

完全な答えではありませんが、sのコンテキストメニューはのオプションCellによって制御されます。sのデフォルトのコンテキストメニューを、任意のセルのスタイルで設定できます。ContextMenuCellCell"Graphics"

CellPrint[
 Cell[BoxData[SuperscriptBox["x", "2"]], "Output", 
  ContextMenu -> 
   FEPrivate`FrontEndResource["ContextMenus", "Graphics"]]]
于 2011-05-26T20:42:57.533 に答える
2

あなたが言った:

LocatorPane グラフィックスを右クリックして、「グラフィックを名前を付けて保存」を呼び出したいと思います。

私はまだそれを行う方法を見つけていませんが、あなたはできることを知らないかもしれません:

  1. LocatorPaneオブジェクトの右側にある空白をクリックし、左にドラッグしてオブジェクトを選択します。

  2. メニュー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これが修正されるでしょうが、それは実用的ではないようです。


を使用するという提案を実装する1つの方法を次に示します"SelectionSaveSpecial"

Dynamic[EventHandler[
  LocatorPane[{1, 1}/2, Graphics[{Gray, Disk[]}]],
  {"MouseClicked", 2} :> 
   FrontEndExecute[
     SelectionMove[EvaluationNotebook[], All, GeneratedCell];
     SelectionMove[EvaluationNotebook[], All, CellContents]; 
     FrontEndToken["SelectionSaveSpecial"]
   ]
]]
于 2011-05-27T08:08:37.087 に答える