0

ユーザーが ToolStrip から描画ツールを選択できる、ペイントのようなプログラムの GUI を作成しています。これらのツールの一部にはバリエーションがあり、ユーザーがポップアップ メニューからいずれかを選択できるようにしたいと考えています。

Photoshop のツールバー インターフェースに詳しい人なら、私が何を求めているかわかるでしょう。ユーザーは、ボタンをクリックして選択したツールで作業を開始するか、クリック時に表示されるポップアップ メニューからツールの 1 つを選択し、その時点からボタンはそのツールを表します。また、そのツール ファミリが選択されると、ボタンの Checked プロパティが True に設定されます。

これは SplitButton または DropDownButton で実現できると思いましたが、これらには現在選択されているツールをユーザーが確認できる Checked プロパティがありません。そこで、クリックすると表示される ToolStripButton と ContextMenuStrip を使用しました。

問題は、カーソル位置を取得して ContextMenuStrip を表示しているため、ToolStripButton のどの部分がクリックされたかによっては、ポップアップ メニューが部分的にそれを覆う可能性があり、非常に洗練されていない外観になることです。ToolStripButton の画面座標を取得するにはどうすればよいですか? または、これを行うためのより良い(そしてまだ比較的単純な)方法はありますか?

4

2 に答える 2

1

この種の機能は、以前にアプリケーションに実装したことがあります。Photoshop では、ツールごとに異なるアイコンが表示されます (なげなわと多角形のなげなわのアイコンは異なり、ブラシと鉛筆のアイコンは異なります)。そのため、ツール ストリップを使用するときは、分割ボタンを使用します。ユーザーがドロップダウン リストからツールを選択すると、選択したツールのアイコンが分割ボタンに適用されます。

ToolStripItem は背景イメージを持つことができます。選択した項目を表示するには、背景画像を無地の半透明の画像 (つまり、25% の透明度を持つ無地の黒) に設定するだけです。

編集: SystemColors.Highlight の半透明バージョンを使用するのがおそらく最善でしょう

于 2009-02-15T16:47:07.727 に答える
0

GUIに使用しているテクノロジーについては言及していません。私はwinformsまたはWPFを推測しています。選択肢がある場合、WPF は、コンテキスト メニュー ボタンだけでなく、アプリケーションの描画部分もサポートするための最良の長期的な選択肢になる可能性があります。

winforms を使用している場合、メイン ボタンにコンテキスト メニューを追加する方法を検討しましたか?

于 2009-02-15T15:25:30.997 に答える