WPF移动装饰器到AdornerLayer或Window之外

6

我有一个装饰器跟随鼠标光标移动。但是一旦鼠标移出窗口,装饰器就会被截断。

是否可以将装饰器层扩展到整个屏幕或创建一个新的装饰器层?


嗨!我想在跨应用程序拖放功能中使用相同的(装饰器随鼠标移动超出窗口边界)。你找到了任何解决方案吗?下面提到的所有文章都只涵盖在同一应用程序窗口内移动装饰器...提前感谢。 - Sebastian
2个回答

0
也许他想要绘制选择区域 我遇到了相同的问题,但你可以查看下面的链接,它有效。 http://www.codeproject.com/Articles/22952/WPF-Diagram-Designer-Part-2
我发现当背景透明时无法接收鼠标事件。如果给装饰者一些背景,那么一切都没问题。
protected override void OnRender(DrawingContext dc) {
    dc.DrawRectangle(bg, null, new Rect(RenderSize));
    dc.DrawRectangle(Brushes.Red, null, new Rect(start, end));
}

背景刷就像这样,

private Brush bg = new SolidColorBrush(Color.FromArgb(0x01, 0, 0, 0));

0

你可能可以做到这一点,但我不确定你想要在adorner层上做什么。我的解决方案只允许adorner在窗口有焦点的情况下跟随鼠标移动。请分享您的最终目标,以便我能更好地帮助您。

我的想法是创建一个全屏、无边框、透明背景的窗口来容纳任何控件。您窗口的非透明部分将位于网格内。

  1. 创建一个新窗口。将其WindowBorderStyle设置为“None”,宽度和高度设置为“Auto”,并将“WindowState”设置为“Maximized”。(我此刻没有看IDE,所以属性名称可能略有偏差。)

  2. 复制原始窗口中网格(或其他主要容器)的XAML代码,并将其粘贴到新窗口中。确保用粘贴的网格替换新窗口中的空网格。

这样就可以让adorner层在整个窗口中跟随鼠标移动。

再次在此处发布您的确切目标,以便我能给出更适合您特定需求的答案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接