我正在开发一个辅助技术应用程序(在C#中),它将信息叠加在当前打开的窗口之上.它检测可点击的元素,并标记它们.
为此,我正在创建一个无边框透明窗口,TopMost设置为"true",并在其上绘制标签.这意味着在当前应用程序前面总会有一个窗口悬停,我可以在其上绘制标签.
问题是,这个窗口不包括右键菜单 - 只包括其他窗口.当用户右键单击时,将在叠加层上方绘制上下文菜单.
我需要能够在右键单击菜单中标记元素,但我无法在当前实现的基础上绘制它.有人知道解决方案吗?
编辑:这是绘制叠加层的相关代码.我在表单设计器中设置了表单选项,而不是代码明确,所以我不确定它会有多大帮助.我删除了与绘图无关的代码或表单本身:
public partial class OverlayForm : Form
{
public OverlayForm()
{
}
protected override void OnPaint(PaintEventArgs eventArgs)
{
base.OnPaint(eventArgs);
Graphics graphics = eventArgs.Graphics;
Brush brush = new SolidBrush(this.labelColor);
foreach (ClickableElement element in this.elements)
{
Region currentRegion = element.region;
graphics.FillRegion(brush, currentRegion);
}
}
}
Run Code Online (Sandbox Code Playgroud)