我正在为一个类似绘画的程序做图形用户界面,在这个程序中,用户可以从ToolStrip中选择绘图工具。其中一些工具有变体,我希望用户能够通过弹出菜单选择一个。
任何熟悉Photoshop工具栏界面的人都会知道我想要什么:用户可以单击按钮并开始使用所选工具,或者从单击时出现的弹出菜单中选择一个工具,从这一点上按钮将代表该工具。此外,当选择该工具族时,该按钮的Checked属性将设置为True。
我认为这可以通过SplitButton或DropDownButton来完成,但是它们没有Checked属性,用户可以看到当前选择的是哪个工具。所以我选择了一个ToolStripButton和一个点击后显示的ContextMenuStrip。
问题是,由于我使用光标位置来显示ContextMenuStrip,这取决于ToolStripButton的哪一部分被单击,弹出菜单可能会部分覆盖它,这是一个非常粗糙的外观。如何获取ToolStripButton的屏幕坐标?或者,有没有更好的(仍然相对简单的)方法来做这件事?
发布于 2009-02-15 16:47:08
我以前在应用程序中实现过这种功能。在Photoshop中,每个工具具有不同的图标(套索和多边形套索具有不同的图标,画笔和铅笔具有不同的图标)。因此,当使用工具条时,我使用拆分按钮。当用户从下拉列表中选择一个工具时,您可以将所选工具的图标应用于拆分按钮。
ToolStripItem可以有背景图像。要显示所选项目,您可以简单地将背景图像设置为纯色半透明图像(即具有25%透明度的纯黑)。
编辑:最好使用半透明版本的SystemColors.Highlight
发布于 2009-02-15 15:25:31
您没有说明您正在为GUI使用什么技术。我猜是winforms或WPF。如果您可以选择的话,WPF可能是最好的长期选择,它不仅支持上下文菜单按钮,而且还支持应用程序的绘图部分。
如果您使用的是winforms,您是否考虑过在主按钮中添加上下文菜单?
https://stackoverflow.com/questions/550832
复制相似问题