0

我正在为类似绘画的程序做 GUI,用户将能够从 ToolStrip 中选择绘图工具。其中一些工具有变化,我希望用户能够通过弹出菜单选择一个。

任何熟悉 Photoshop 工具栏界面的人都知道我在追求什么:用户可以单击按钮并开始使用所选工具,或者从单击时出现的弹出菜单中选择一种工具,然后从那时起该按钮将代表该工具。Also, the button will have the Checked property set to True when that tool-family is selected.

我认为这可以通过 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 回答